안녕하세요 여러분,
보고서에 <<시뮬레이션 수식 저장 명령을 보내려고 할 때 보고서를 적절하게 참조하는 데 어려움을 겪고 있습니다.
특정 분석을 수행하기 위한 자동화된 스크립트가 있으며 이 스크립트에서는 report_of_interest를 얻기 위한 공개 보고서 목록을 얻습니다. 아래 JSL을 참조하세요.
report_windows = Get Window List( "Report" );
report_of_interest = Empty();
For Each( {report_windows}, report_windows,
outline_title = Try( report_windows[Outline Box( 1 )] << Get Title, "" );
If( Starts With( outline_title, "Generalized " ),
report_of_interest = report_windows;
Break();
);
);report_of_interest는 보고서의 DisplayBox[HeadBox]에 대한 참조입니다. 이 참조를 사용하면 보고서에서 관심 있는 열(예: 매개변수 추정 열)의 시뮬레이션을 수행하는 명령을 보내는 등의 작업을 수행할 수 있습니다.
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
그러나 <
report_of_interest << (Fit[1] << Save Simulation Formula)
로그 창에 다음 오류가 표시됩니다.
'HeadBox' 개체가 '보내기' 메시지를 인식하지 못합니다. 아마도 다음 중 하나를 의미할 것입니다: <<<<<<<<<<<<창 크기 설정 < <창 ID 설정 <<크기 창 <<창 이동 <<창 표시 <<창 닫기 <<창 제목 설정 <<창 아이콘 설정 <<메인 창 설정 <<인쇄 머리글 설정 <<마우스 끌기 <<최소 크기 설정 < <너비 설정 <<활성화되었습니다.
개요의 제목인 위에서 설명한outline_title 변수를 사용하려고 하면 로그에 다음 오류가 표시됩니다.
Send는 'Send' 액세스 또는 평가에서 스크립팅 가능한 개체를 기대합니다.
내가 이해하지 못하는 것은 스크립팅 색인 도움말과 내 JSL 코드의 예제에 대한 참조의 차이점입니다. 스크립팅 인덱스 도움말의 첫 번째 예는 다음과 같습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
fm = dt << Fit Model(
Y( :Y ),
Effects( :Age, :Gender, :BMI, :BP, :Total Cholesterol, :LDL, :HDL, :TCH, :LTG, :Glucose ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso( Adaptive ) ), Validation Method( KFold, 5 ) ) )
);
fm << (fit[1] << Save Simulation Formula);
fm은 Fit Generalized[]를 참조하는 변수입니다. 스크립팅 인덱스 예제에서는 모두 이 참조를 사용하여 시뮬레이션 열을 데이터 테이블에 저장할 수 있습니다.
내가 볼 수 있는 한 가지 큰 차이점은 예제에서 모두 하위 명령 Run(Fit())을 사용하여 Fit Model() 명령을 데이터 테이블에 보낼 수 있다는 것입니다. 내 JSL 코드는 더 일반화되어 있고 Y, 응답 및 X, 요소에 대해 항상 동일한 열에서 실행되지는 않기 때문에 그렇게 할 수 없습니다.
내 코드의 유사한 JSL은 다음과 같습니다.
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
작업 중인 데이터 테이블에 따라 변경될 수 있으므로 나열된 효과가 없습니다. 어떤 열이 응답 열인지 표시하도록 요청하기 전에 코드 섹션이 있으므로 JSCL 코드에 해당 열에 대한 참조가 있으므로 Fit Model()에 Y(Eval(ycols))를 포함할 수 있습니다.
안타깝게도 fm = avdt << Fit Model()과 같은 작업을 수행할 수 없으며 그런 식으로 참조할 수 없습니다. 모든 효과를 입력하고 GenReg 플랫폼 창에서 Run을 클릭하면 fm이 삭제된 개체라는 오류를 반환하기 때문입니다. 참조[]. 실제로 Scripting Index 도움말의 예제에서 Run()을 사용하여 행을 주석 처리하고 실행한 다음 Fit Model 대화 상자에서 Run을 클릭하면 예제 코드는 시뮬레이션 열을 데이터 테이블에 저장하지 않습니다.
글이 길어져서 죄송합니다. 제가 겪고 있는 문제에 대한 맥락을 좀 더 설명할 필요가 있다고 느꼈습니다. Report_of_interest의 올바른 참조를 수정하는 데 도움이 되어 <
감사해요!,
DS
한 가지 차이점은 다른 참조를 사용하고 있다는 것입니다. 스크립팅 인덱스 예제는 "Fit Generalized[]"를 사용하고 "DisplayBox[HeadBox]"를 사용하고 있습니다. 다음과 같은 것을 사용하여 Fit Generalized에 대한 참조를 얻을 수 있습니다.
report_of_interest[OutlineBox(1)] << get scriptable object;
안녕 @jthi ,
언제나처럼 빠르고 유용한 답변에 감사드립니다! 예, 작동합니다. 또한 모델링할 응답 열을 요청하는 코드의 이전 부분을 변경하여 동시에 모델 효과도 요청함으로써 이 문제를 해결할 수 있다는 것을 깨달았습니다. 이런 식으로 fm = dt<
<< Get Scriptable Object를 자주 사용할 필요가 없었기 때문에 실제로 떠오르는 명령은 아닙니다. 도움을 주셔서 감사합니다.
감사해요!,
DS