분석(단계적 회귀) 플랫폼을 위한 몬테카를로 시뮬레이션임의의 요소가 포함된 여러 열을 사용하는 분석이 있습니다.나는 열에 있는 난수를 수동으로 업데이트하는 방법을 알고 있으며 분석 결과에 대한 시뮬레이션을 수행하는 방법을 이해합니다.하지만 이 경우에는 열의 난수가 업데이트될 때마다 단계적 회귀를 실행하고 싶습니다.적어도 1000번은 하고 싶어요.이 프로세스를 자동화하는 방법을 모르겠습니다. 수식 열에 새 난수를 생성하고, 단계적 회귀 플랫폼을 다시 실행하고, 선택한 모델을 실행하고 결과를 수집합니다.
고급 통계 모델링Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션(또 있는 것 같은데, 관련 스레드 이 글을 게시하기 전까지는 발견하지 못했습니다).
어쨌든, 더 빠를 수도 있고 그렇지 않을 수도 있는 대체 접근 방식(위의 데이터 표를 사용하여)을 찾으십시오.
NamesDefaultToHere(1);
dt = DataTable("Test Data.jmp");
n = 100; // Number of simulations
resMat = []; // Results matrix
for(i=1, i<=n, i++,
fm = dt << Fit Model(
Y( :Y ),
Effects(
:Column 2 001, :Column 2 002, :Column 2 003, :Column 2 004, :Column 2 005,
:Column 2 006, :Column 2 007, :Column 2 008, :Column 2 009, :Column 2 010
),
Personality( "Stepwise" ),
Run,
Invisible
);
fmRep = Report(fm);
fmRep[ButtonBox(7)] << click; // Press the 'Go' button
Wait(0); // Needed to let Stepwise do it's thing before proceeding
selectedItems = fmRep[CheckBoxBox(2)] << Get Selected Indices As Matrix; // Retrive which parameters were selected this time
fmRep << closeWindow;
resmat = VConcat(resmat, Transpose(selectedItems)); // Append current results row-wise to those we have already
dt << reRunFormulas; // Get a new random sample
);
dt2 = AsTable(resmat); // Make a results table
dt2 << setName("Parameters selected by 'Stepwise'");
Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션누락된 지침을 찾았지만 작동시킬 수 없습니다.dt << 수식 다시 실행;
내 수식에 새로운 난수 세트가 생성됩니다.그러나 스크립트에 삽입하면 For 루프 내부이지만 Fit Model 앞에는 난수가 변경되지 않는 것 같습니다.내 수정된 스크립트는 다음과 같습니다.
전역변수 지우기();
로그 지우기();
이름의 기본값은 여기에 있습니다( 1 );
//들어오고 나가는 경로 정의
Path_in = 파일 선택( "파일 선택" );
If( 디렉터리가 존재함( "$Desktop\Fit_Stepwise" ),
,
디렉터리 만들기( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Desktop\Fit_Stepwise\";
//Fit 모델을 실행하고 데이터 테이블을 연 후 단계적으로 실행합니다.
dt = 열기( Path_in );
( i = 1, i <= 1000, i++,
dt << 수식 다시 실행;
ow = dt << 모형 적합(
Y( :Y ),
효과(
:열 2 001,
:열 2 002,
:열 2 003,
:열 2 004,
:열 2 005,
:열 2 006,
:열 2 007,
:열 2 008,
:열 2 009,
:열 2 010
),
성격( "단계적" ),
달리다,
SendToReport( Dispatch( {}, "단계 기록", OutlineBox, {Close( 1 )} ) )
);
dt_result = Report( ow )[Outline Box( "Stepwise Fit for Y" )][Outline Box( "현재 추정치" )][Table Box( 1 )] << 데이터 테이블로 만들기;
dt_result << save( Path_out || Char( i ) || ".csv", "csv" );
아 << 창을 닫으세요;
dt_result << 창 닫기;
);
dt << 창 닫기;
dt_result = 다중 파일 가져오기(
<<폴더 설정( Path_out ),
<<이름 필터 설정( "*.*;" ),
<<이름 설정 활성화( 0 ),
<<크기 필터 설정( {589, 589} ),
<<크기 설정 활성화( 0 ),
<<날짜 필터 설정( {3727681987.773, 3727682566.676} ),
<<파일 이름 추가 열 설정( 1 ),
<<가져오기 모드 설정( "CSVData" ),
<<문자 집합 설정( "Best Guess" ),
<<스택 모드 설정( "스택 유사" ),
< < < < < < < < < < < < < < < < < <<가져오기 콜백 설정(Empty())
) << 데이터 가져오기;
dt_result << 행 선택( Select where( :Name( "\!"Prob>F\!"" ) > 0.05 ) ) << 행 삭제;
dt_result << Distribution( 스택( 1 ), 명목 분포( Column( :Parameter ), 가로 레이아웃( 1 ), 세로( 0 ) ) );
Rerun Formulas 명령을 배치하는 데 도움을 주거나 작동하지 않는 이유를 알려줄 수 있는 사람이 있습니까?
Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션솔직한
고마워요, 거의 완벽해요.그러나 내 열에는 무작위 함수가 있으며 루프가 실행될 때마다 업데이트(새로운 무작위 추첨 선택)하기를 원합니다.귀하가 작성한 스크립트는 각 실행에 대해 동일한 난수를 사용하는 것으로 보입니다.매번 수식을 업데이트할 수 있는 방법이 있나요?
Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션안녕하세요 dale_lehman
내 생각은 '단계적' 플랫폼의 결과를 폴더에 저장하는 것입니다. 그 다음에 ' 다중 파일 가져오기 ' 전체 결과를 하나의 파일로 저장합니다.
마지막으로 '로 행을 정리합니다. P값' 원하는대로 배포하십시오.아래와 같이 JSL을 자세히 설명합니다.
Clear Globals();
Clear Log();
Names Default To Here( 1 );
//Define path in and out
Path_in = Pick File( "Select file" );
If( Directory Exists( "$Desktop\Fit_Stepwise" ),
,
Create Directory( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Desktop\Fit_Stepwise\";
//Run Fit model and stepwise after open datatable
dt = Open( Path_in );
For( i = 1, i <= 1000, i++,
ow = dt << Fit Model(
Y( :Y ),
Effects(
:Column 2 001,
:Column 2 002,
:Column 2 003,
:Column 2 004,
:Column 2 005,
:Column 2 006,
:Column 2 007,
:Column 2 008,
:Column 2 009,
:Column 2 010
),
Personality( "Stepwise" ),
Run,
SendToReport( Dispatch( {}, "Step History", OutlineBox, {Close( 1 )} ) )
);
dt_result = Report( ow )[Outline Box( "Stepwise Fit for Y" )][Outline Box( "Current Estimates" )][Table Box( 1 )] << Make Into Data Table;
dt_result << save( Path_out || Char( i ) || ".csv", "csv" );
ow << close window;
dt_result << Close Window;
);
dt << Close Window;
dt_result = Multiple File Import(
<<SET folder="">F\!"" ) > 0.05 ) ) << Delete Rows;
dt_result << Distribution( Stack( 1 ), Nominal Distribution( Column( :Parameter ), Horizontal Layout( 1 ), Vertical( 0 ) ) );</SET>
Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션이전 게시물에서 계획한 내용은 좋은 계획입니다. 나도 그렇게 할 것이다. 나는 몇 가지 권장 사항을 제시하려고 노력할 것입니다.
- JMP 스크립팅이 처음이라면 시작점은 다음과 같습니다. 스크립팅 가이드 . 이 특정 작업에서 몇 가지 중요한 부분은 다음과 같습니다.
- 그 외에도 도움말 메뉴의 스크립팅 인덱스에 대해 잘 알고 있어야 합니다. 스크립팅 개체에는 함수, 개체 및 표시 상자의 세 가지 그룹이 있습니다. 좌측 상단에 콤보박스가 있으며, 특정 그룹으로 범위를 좁힐 수 있습니다.
- 이 특정 작업의 경우 개체 그룹을 확인해야 할 수도 있습니다. 데이터 테이블을 포함한 모든 플랫폼이 여기에 나열됩니다. "Fit Model" 개체 아래의 "Fit Stepwise" 항목을 확인해 보세요. "Fit Stepwise"를 클릭하고 오른쪽에서 "Item Messages" 중 "Finish" 메시지를 찾으세요. 그것이 지금 당신에게 누락된 핵심 부분일 수 있습니다.
- 이 특정 작업을 위해서는 데이터 테이블을 조작하는 방법도 배워야 합니다. 특히 연결이 그럴 수도 있습니다. 개체 목록으로 이동하여 "데이터 테이블"을 클릭하고 항목 메시지 중 오른쪽에서 "연결"을 찾습니다.
위의 내용 외에도 동료들로부터 배운 다른 유용한 팁이 있습니다.
- 가능할 때마다 토론 게시판에 더 작고 구체적인 질문을 게시하십시오. 도움을 받을 가능성이 더 높아집니다.
- 첨부파일보다 스크린샷을 선호하세요. JSL 코드의 경우 독자가 볼 수 있도록 게시물에 직접 삽입할 수 있습니다. 게시물을 편집할 때 툴바에서 버튼을 찾아보세요. 도움을 줄 가능성도 더 높아질 것입니다. 예를 들어 모바일 장치의 리더가 첨부 파일을 열 가능성은 거의 없습니다.

Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션내 문제는 대부분 해결되었지만 여전히 질문이 있습니다.제가 원하는 대로 단계별 회귀를 실행하는 작은 스크립트가 첨부되어 있습니다.그러나 1000개의 샘플을 생성하려면 "샘플" 열을 생성하고 이를 분석에서 "기준" 변수로 사용해야 했습니다.이것은 작동하지만 파일을 매우 길게 만들어야 하기 때문에 시뮬레이션을 수행하기에는 번거로운 방법입니다. 예를 들어 각각 1000개 관측값의 1000개 샘플에는 1,000,000개의 행이 필요합니다.시뮬레이션을 수행하는 보다 효율적인 방법을 아는 사람이 있습니까?제가 아는 한, 많은 JMP 플랫폼에 포함된 "시뮬레이트" 옵션은 특정 분석 결과만 시뮬레이션할 수 있고 분석 자체는 시뮬레이션할 수 없습니다.
Re: 분석(단계적 회귀) 플랫폼을 위한 Monte Carlo 시뮬레이션혹시 도움을 주실 수 있는 관대하신 스크립터가 있다면 좀 더 구체적으로 말씀드리겠습니다.내가하려는 일의 작은 버전을 첨부했습니다.첨부된 파일에는 임의의 정규 분포와 첫 번째 열 Y가 포함된 10개의 열(모두 열 2로 시작)이 있습니다. 이 열은 매개변수 1부터 5까지 레이블이 지정된 5개의 열과 수식에 하나의 임의 정규 분포를 사용합니다.나는 다음 단계를 수행하고 싶습니다:
1. 파일에 저장된 단계적 회귀를 실행합니다.모델을 만들거나 실행할 필요가 없으며, Fit Model 플랫폼에서 Run 후 단계별 절차를 실행하는 Go 버튼만 실행하면 됩니다.
2. 열 2로 시작하는 10개의 열 각각이 단계적 절차에 의해 얼마나 자주 선택되는지 기록하십시오. (특정 정보를 수집하는 스크립트를 작성하는 방법을 모르겠습니다)
3. 새로운 시뮬레이션 값 세트가 포함되도록 5개 매개변수 열에 대한 수식을 다시 실행합니다.테이블 왼쪽 상단의 빨간색 화살표에 있는 수식 재실행 명령을 사용하여 이 작업을 수행할 수 있다는 것을 알고 있습니다(그러나 스크립트를 작성하는 방법은 모르겠습니다).
4. 1단계와 2단계를 반복합니다. (간단한 루프를 통해 이 작업을 수행할 수 있다고 생각합니다.)
5. 이 작업을 1000회 수행하고 단계적 절차에서 10개의 열 2 열 각각이 선택된 횟수에 대한 분포를 표시합니다.
나는 이 모든 것이 스크립트로 작성될 수 있다고 믿지만 그것은 내가 할 수 있는 어떤 것보다도 훨씬 뛰어납니다.누구든지 도움을 주시면 감사하겠습니다.나는 이에 대한 출구를 염두에 두고 있기 때문에 누군가와 논문을 공동 집필할 의향이 있습니다.