<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />필자는 기존 플랫폼에 몇 가지 추가 정보를 추가하는 스크립트를 작성하고 있습니다 (예 : RSquare Predicted to Fit 모델 추가). 내 스크립트의 일부로 생성 된 플랫폼에 pred.R2를 추가 할 수 있습니다. 그러나 사용자가 맞춘 모델에 대한 참조는 어떻게 얻을 수 있습니까? 사용자 대화 상자를 만들어서 사용자가 pred.R2를 추가해야하는 플랫폼 창을 선택할 수있게하려고합니다.
물론 Fit-Model-plaftorm의 주요 핫스팟에 직접 메뉴 항목을 추가하는 것이 더 좋겠지 만 가능한지 전혀 알지 못합니다.
조언을 주셔서 감사합니다.
세바스찬
세바스찬,
MS의 훌륭한 답장을 위해 ... R2 예측값을 Fit Model 출력에 추가하는 것과 비슷한 스크립트를 작성했습니다. 적절한 보고서를 선택하는 대화 상자를 표시하는 대신 메뉴 또는 현재 보고서 창의 도구 모음에서 스크립트를 실행할 수 있습니다 (스크립트를 메뉴 또는 도구 모음에 추가해야 함). 그런 다음 Current Window () 명령은 보고서 창에 대한 참조를 제공하며 보고서 창에서 개요 상자를 검색 할 수 있습니다. 다음은 스크립트의 일부입니다.
curwin = Current Window();For( i = 1, i < 10000, i++, Try( outlinebox = curwin[Outline Box( i )]; Try( outlineboxobj = outlinebox << Get Scriptable Object; // DETAILS NOT SHOWN: // Check that the outline box is the top of a Fit Model analysis, with Standard Least Squares personality. // Pull the PRESS statistic and SS(treatment) to calculate R2-Predicted and append it to the Summary of Fit. ); , Break(); // If no more outline boxes are found, the first "Try()" goes here and forces an escape from the For() loop. ););
우리 스크립트는 실제로 R2 예측 값을 해당 창에있는 모든 적합 모델 분석에 삽입합니다 (여러 Y 및 by-variable에 대해 작동). 보고서 창에서 모든 개요 상자를보고이를 수행합니다.
코멘트:
1. JSL 문서는 "<< 스크립트 가능 객체 가져 오기"메시지에 대한 정의를하지 않습니다. 기존 보고서 창 (스크립트가 아닌 사용자가 이미 작성한 표준 분석)에 액세스하는 방법에 대해 매우 오랜 시간을 보았습니다. 이 기능은 많은 스크립팅 기회를 열어줍니다.
2. 우리 모두가 바퀴를 다시 발명하지 못하도록하기 위해 JMP가 R2-Predicted 값을 표준 Fit Least Squares 출력에 포함하면 좋을 것입니다.
하워드
대단히 감사합니다! 그건 속임수 였어. << 전에 스크립트 가능한 객체를 얻지 못했습니다!
보통, << 스크립트 가능한 객체 얻기 플랫폼에 대한 액세스 권한을 부여 할 수 있습니다. 그러나, 그 모델에 맞추기 출력은 약간 특이한 것이므로 플랫폼의 맨 위 개요 상자를 찾기 위해 보고서를 파고들 필요가 있습니다.
역할 별 역할이 할당되지 않은 경우, 아래 작업이 작동해야합니다. (위와 같은 함수와 정의를 가정).
// 대화 상자
새창 ( "회귀 보고서 선택" ,
<< 모달 ,
패널 박스 ( "예상되는 R2를 추가하려면 회귀 보고서 선택" ,
rb = 라디오 박스 ( 창문들 ) ,
단추 상자 ( "승인" ,
창문 ( rb << 선택 받기 ) << 창을 앞으로 가져 오십시오. ;
insertToReport (
현재 보고서 () [ 1 , 1 , 1 ] << 스크립트 가능한 객체 가져 오기 ()
) ;
)
)
) ;
많은 고마워, Sebastian. 나는 거의 그것을 가지고있다 (나는 생각한다). 그래서 되풀이하게하게 해주세요. . .
사용자는 코드에서 알지 못하는 상태에서 JMP 세션을 갖게됩니다. 즉, 여러 개의 테이블을 열어 각각 여러 개의 창으로 구성 할 수 있습니다. 이 창 중 일부는 'Fit Least Squares'를 포함 할 수 있습니다. 보고서. 코드는 열려있는 모든 창을 검사하고 후자를 식별해야하며 두 개 이상인 경우 추가 보고서 내용을 추가 할 창을 사용자가 선택하도록합니다 (단 하나만있는 경우 요청할 필요가 없음). 중요한 점은 코드가 실제로 보고서를 생성하지 않는다는 것입니다.
그게 맞습니까?
안녕 이안,
답장을 보내 주셔서 감사합니다. 이 워크 플로를 따르고 싶습니다.
1. 사용자는 "Fit Model (Standard Least Squares)"을 사용하여 분석을 시작합니다.
2. 그런 다음 사용자가 스크립트를 실행하여 예상 R2를 보고서에 추가합니다.
삼. 예측 된 R2는 "Fit Model"보고서에 첨부됩니다.
문제는 내 스크립트에서 사용자가 만든 보고서에 액세스하는 방법입니다.
현재 내 코드는 다음과 같습니다. 기본적으로 마지막 섹션 인 "테스트"를 사용자 대화 상자로 대체하여 사용자가 Pred. R2가 추가되어야합니다 (특히 여러 보고서가있는 경우). 나는 기존 보고서를 참조 할 수있는 부분을 놓치고 있습니다.
// "Fit Model"-plattform에서 PRESS 통계를 추출합니다.
getPRESS = 기능 ({ 플래트 폼 } ,
플래트 폼 << 프레스 ( 보여 주다 = 1 ) ;
보고서 = 플래트 폼 << 보고서 ;
프레스 = ( 보고서 [ OutlineBox ( "프레스" )] [ 1 ] [ 1 ] << 매트릭스로보기 ) [ 1 ] ;
프레스 ;
) ;
// "Fit Model"-plattform에서 총 제곱합을 추출합니다.
getTSS = 기능 ({ 플래트 폼 } ,
보고서 = 플래트 폼 << 보고서 ;
SS = ( 보고서 [ OutlineBox ( "분산 분석" )] [ 1 ] [ 삼 ] << 매트릭스로보기 ) ;
tss = SS [ Nrow ( SS )] ;
tss ;
) ;
// Fit-Model-plattform을 사용하여 계산 된 선형 모델에 대해 예측 된 R2를 계산합니다.
predR2 = 기능 ({ 플래트 폼 } ,
프레스 = getPRESS ( 플래트 폼 ) ;
tss = getTSS ( 플래트 폼 ) ;
pr2 = 1 - 프레스 / tss ;
pr2 ;
) ;
// 보고서에 pred R2를 삽입합니다.
insertToReport = 기능 ({ 플래트 폼 } ,
lm.rep = 플래트 폼 << 보고서 ;
이름 = lm.rep [ OutlineBox ( "맞춤 요약" )] [ StringColBox ( 1 )] << 도망 ;
가치 = lm.rep [ OutlineBox ( "맞춤 요약" )] [ 번호 열 상자 ( 1 )] << 도망 ;
에 집어 넣다 ( 이름 , "RSquare Predicted" , 삼 ) ;
에 집어 넣다 ( 가치 , predR2 ( 플래트 폼 ) , 삼 ) ;
lm.rep [ OutlineBox ( "맞춤 요약" )] [ StringColBox ( 1 )] << 값 설정 ( 이름 ) ;
lm.rep [ OutlineBox ( "맞춤 요약" )] [ NumberColBox ( 1 )] << 값 설정 ( 매트릭스 ( 가치 )) ;
) ;
// 테스트해라.
dt = 열다 ( "$ sample_data / Design Experiment / Coffee Data.jmp" ) ;
분석 = 모델에 맞추기 (
와이 ( : 힘 ) ,
효과 ( : 갈기 , : 온도 , : 시각 , : 요금 , : 역 ) ,
인격 ( "표준 최소 사각형" ) ,
힘 ( "최소 보고서" ) ,
운영 (
: 힘 << { 착용감 부족 ( 0 ) , 예측으로 실제 플롯 ( 0 ) ,
플롯 회귀 분석 ( 0 ) , 예측으로 잔차를 표시합니다. ( 0 ) ,
플롯 효과 활용 ( 0 }}
)
) ;
InsertToReport ( 분석 ) ;
부가: 이것은 내가 시도했지만 일을 할 수 없었습니다 :
// ----------------------- +
// 사용자 대화 상자 |
// ----------------------- +
// 열려있는 모든 창 가져 오기
windows = {};
ref_windows = 창 ();
(i = 1, i <= 길이 (ref_windows), i ++,
삽입 (윈도우, ref_windows << 창 제목 가져 오기);
);
// 대화 상자
새 창 ( "회귀 보고서 선택", "모달,
패널 박스 ( "예상 R2를 추가하는 회귀 분석 선택", pf = 라디오 박스 (윈도우));
);
lm_plattform = Plattform (pf << Get);
lm_plattform << 맨 앞으로 가져 오기;
insertToReport (lm_plattform);
Sebastian이 직면 한 워크 플로에 대한 자세한 내용이 필요하다고 생각합니다. 동일한 보고서에서 여러 모델을 허용하는 모델링 플랫폼 (예 : 신경)을 사용하고자한다고 생각하는 것이 맞습니까? 어떤 특정한 플랫폼이 있습니까?