JSL 스크립트 - 예측 수식 결과 가져오기안녕하세요,
예측 수식에 X를 설정한 후 예측 값을 얻으려고 합니다.
예를 들어 Y = X1 + X2인 경우 새 행을 만들고 X1 = 2 및 X2 = 4를 설정하고 Y = 6의 예측 값을 가져옵니다.
이를 수행하는 가장 쉬운 방법은 예측 수식을 새로운 열 세트에 저장하는 것이라고 생각했습니다.
그런 다음 새 행을 추가하고 모든 X를 설정합니다.
그런 다음 예측 수식의 행 값에 액세스하면 됩니다.
그러나 이것은 작동하지 않습니다. 로그에는 값이 '.'을 반환하는 것으로 표시됩니다. 스크립트를 두 번 실행하여 여러 행이 생성되면 값이 올바르게 반환됩니다. 두 개의 행을 추가하고 스크립트를 한 번만 실행해도 여전히 'null' 또는 '.'이 표시됩니다. 로그 파일에 있습니다. X 값이 설정된 새로 추가된 행의 예측 공식 결과를 얻기 위해 JMP가 스크립트를 두 번 실행해야 하는 이유가 있는 것 같습니다.
스크립트를 사용하여 예측 수식에서 예측 값을 가져오는 더 좋은 방법이 있습니까?
감사합니다,
네이트
Re: JSL 스크립트 - 예측 수식 결과 가져오기엄청난. 이제 실행되고 예상대로 작동합니다. 많은 감사를 드립니다.Re: JSL 스크립트 - 예측 수식 결과 가져오기JMP Pro에는 일반 버전에는 없는 추가 PLS 기능이 있다는 사실을 잊고 있었습니다. JMP의 경우 비슷하지만 조금 더 간단합니다.
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Do a PLS fit in JMP (also works in JMP Pro)
pls = dt << Partial Least Squares(
Y( :ls, :ha, :dt ),
X(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
Validation Method( Name( "Leave-One-Out" ), Initial Number of Factors( 15 ) ),
Fit(
Method( NIPALS ),
Number of Factors( 7 ),
Show Confidence Band( 1 ),
Distance Plots( 1 ),
Scatter Scores Plots( 1 ),
Diagnostics Plots( 1 ),
Overlay Loadings Plots( 1 ),
T Square Plot( 1 ),
Overlay Coefficients Plots( 1 )
)
);
// See what messages the PLS platform understands (look in the Log Window)
ClearLog();
ShowProperties(pls);
// Save some results from the (7 factor) fit
pls << (Fit[1] << savePredictionFormula);
pls << (Fit[1] << saveYresiduals);
코드가 작동하는 이유를 이해하려면 '도움말 > 책 > 스크립팅 가이드'부터 시작하여 JSL의 기초를 배우겠습니다.
Re: JSL 스크립트 - 예측 수식 결과 가져오기고마워요 이안
죄송합니다. 제 스크립팅 지식이 너무 제한되어 있어서 귀하의 도움으로 작업 속도가 빨라지지 않습니다. 좀 더 지원해 주시겠습니까?
먼저 저는 PRO가 아닌 JMP로 작업합니다. 이것이 내 JMP 자동화 PLS 스크립트가 귀하의 스크립트와 다르게 보이는 이유라고 생각합니다. 내 스크립트를 첨부했습니다.
스크립트를 읽으면서 많은 질문이 나타납니다.
PLSLAUNCH와 PLSFITS를 분리하는 이유는 무엇인가요? 이것이 필요한가요, 아니면 읽기/문서화에 있어서 편안함을 위해서인가요?
예를 들어 "맞춤"이 하나만 있는 경우 PLSFITS에 맞춤을 할당해야 합니까? 단 7가지 요소( pls는 << ( 맞다 [ 1 ] << savePredictionFormula );
pls는 << ( 맞다 [ 1 ] << saveY잔차 ); 나는 그것이 의미한다고 가정합니다: Fit[1]의 잔차를 PLSFITS 객체에 저장합니다(그리고 이 이름은 제가 선택할 수 있습니다. 더 나은 식별을 위해 PLSFITS일 뿐입니다).
스크립트를 실행하면 로그 창에 다음 오류가 표시됩니다: plsFits << (Fit[/*###*/1] << savePredictionFormula); PRO 용어 때문인가요?
많은 감사
베드로
Re: JSL 스크립트 - 예측 수식 결과 가져오기안녕하세요 Peter. 시작하는 데 도움이 될 것입니다. 'Wait()' 명령은 미용 효과를 위한 것이므로 제거할 수 있습니다.
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Launch the PLS platform
plsLaunch = dt << Fit Model(
Y( :ls, :ha, :dt ),
Effects(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
No Intercept( 1 ),
Center Polynomials( 0 ),
Personality( "Partial Least Squares" )
);
// Do a couple of fits
Wait(2);
plsFits = plsLaunch << Run(
Fit( Method( NIPALS ), Number of Factors( 7 ) ),
Fit( Method( NIPALS ), Number of Factors( 6 ) )
);
// Save the prediction formula for the first fit (7 factors)
Wait(2);
plsFits << (Fit[1] << savePredictionFormula);
// Save the prediction formula for the second fit (6 factors)
Wait(2);
plsFits << (Fit[2] << savePredictionFormula);
// Now save the Y residuals
Wait(2);
plsFits << (Fit[1] << saveYresiduals);
plsFits << (Fit[2] << saveYresiduals);
Re: JSL 스크립트 - 예측 수식 결과 가져오기안녕하세요 이안님,
JSL의 PLS에서 "Y 예측 값 저장"을 저장하기 위해 커뮤니티를 검색하고 있습니다. 어떤 도구에서 어떤 열 저장을 처리하는지(예: 예측 공식, 신뢰 구간, 예측 값)를 알려주는 문서가 있습니까?
고마워요 피터
Re: JSL 스크립트 - 예측 수식 결과 가져오기죄송합니다. 아니요. 문제가 혼동되었을 수 있습니다. 'Wait()'는 단지 미용적인 효과를 위한 것이었습니다. 일반적으로 JSL에서는 이것이 절대 필요하지 않습니다(그러나 필요할 수 있는 몇 가지 매우 드문 상황이 있습니다). 아마도 데이터 테이블에 '수식 실행' 메시지를 보내는 것이 가장 좋습니다.
Re: JSL 스크립트 - 예측 수식 결과 가져오기아 완벽해! 그냥 Wait()만 넣으면 됩니다. 감사합니다!
Re: JSL 스크립트 - 예측 수식 결과 가져오기세부 사항은 사용하는 플랫폼에 따라 다르지만 기본 아이디어는 다음과 같습니다.
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Do a regression
biv << fitLine;
/// Save the prediction formula column
biv << (curve[1] << savePredicteds);
// Add a new observation (row) that we want to predict for
Wait(2);
dt << addRows(1);
// Give predictor values and get the prediction back
Column(dt, "weight")[NRow(dt)] = 160;
Column(dt, "height")[NRow(dt)] = 65;