스크립트? 비선형 모델 열 수식을 여러 열에 적용열 1에 2개의 매개변수가 있는 모델 공식이 있고 이 모델을 80개의 서로 다른 데이터 열(Cols 2 - 82)에 맞추고 싶습니다. 여기서 각 데이터 열에는 맞춤 맞춤된 2개의 매개변수가 있습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?
스크립트를 작성해야 할까요?
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용해결책으로 이 문제에 수렴하게 됩니다.
이름 기본값은 Here( 1 )입니다.
dlg = 열 대화 상자(
Title( "비선형 회귀" ),
yCol = Col List( "Y, 응답",
데이터 유형(숫자),
최소 열( 1 )
),
xCol = Col List( "X, 예측 공식",
데이터 유형(숫자),
최소 열( 1 ),
최대 열( 1 )
)
);
If( dlg["버튼"] != 1,
Throw( "사용자 취소" );
);
에서 제거( dlg );
평가 목록( dlg );
dt = 현재 데이터 테이블();
n 적합 = N 항목( yCol );
수식 = xCol[1] << 수식 가져오기;
n parms = N 항목( Arg( 수식, 1 ) );
parm = J( n 적합, 2* n parms, .);
clmnm={};
parmnm = Arg(공식,1);
parclnm = As List(J(1,n parms));
For( i = 1, i<= n parms,i++,
parmnm[i]=Char(parmnm[i]);
parclnm[i]=Left(parmnm[i],Munger(parmnm[i],1,"=")-1);
);
For( f = 1, f <= n 적합, f++,
노력하다(
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Numeric Derivatives Only (1), Finish, Go );
parm[f,[1,2]] = Transpose( Report( nl fit )["Solution"][NumberColBox(5)] << Get As Matrix );
parm[f,[3,4]] = Transpose( Report( nl fit )["Solution"][NumberColBox(6)] << Get As Matrix );
);
clmnm[f]=Column(yCol[f])< );
dt = As Table( parm );
dt< 열 = 열(1);
For( f = 1, f <= n 적합, f++,
col[f]=clmnm[f];
);
For( i = 1, i<= n parms,i++,
열 = 열(i+1);
col << Set Name(parclnm[i]||"예상");
col = 열(i+1+n 매개변수);
col << Set Name(parclnm[i]||"ApproxStdError");
);
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용나는 그것을 알아!
감사합니다!
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용이 단계에서 오류가 발생합니다.
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용감사합니다!
지금 테스트 중 ...
디버깅 시 다음 오류가 발생했습니다.
'아래 첨자' , 보고서(nl fit )[/*###*/"Parameter Estimates"]의 액세스 또는 평가에서 표시 상자를 첨자할 수 없습니다.
@Mark_Bailey 쓴 :
이 솔루션은 약간 까다로운 것으로 밝혀졌습니다. 사용 중인 모델이 Fit Curve 라이브러리에 있는 모델이 아닌 경우에만 작동합니다. (그렇다면 Nonlinear는 이 스크립트가 제공하지 않는 이름으로 모델이 지정될 것으로 예상하는 Fit Curve를 시작합니다.) 실제 모델이 더 복잡하다는 귀하의 주장에 따라 저는 그럴 기회를 잡았습니다. Fit Model 라이브러리에 없고 다음 스크립트를 작성했습니다.
Names Default to Here( 1 );
dlg = Column Dialog(
Title( "Nonlinear Regression" ),
yCol = Col List( "Y, Response",
Data Type( Numeric ),
Min Col( 1 )
),
xCol = Col List( "X, Predictor Formula",
Data Type( Numeric ),
Min Col( 1 ),
Max Col( 1 )
)
);
If( dlg["Button"] != 1,
Throw( "User cancelled" );
);
Remove From( dlg );
Eval List( dlg );
dt = Current Data Table();
n fits = N Items( yCol );
formula = xCol[1] << Get Formula;
n parms = N Items( Arg( formula, 1 ) );
parm = J( n fits, n parms, . );
For( f = 1, f <= n fits, f++,
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Finish );
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
);
As Table( parm );
먼저 JMP 데이터 테이블을 연 다음 이 스크립트를 열고 실행합니다. 모든 응답 열(귀하의 예에서는 열 2-82)을 선택하고 Y, 응답 . 모델 수식이 있는 열(귀하의 예에서는 열 1)을 클릭하고 X, 예측 공식 , . 그런 다음 클릭 좋아요 .
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용이 솔루션은 약간 까다로운 것으로 밝혀졌습니다. 사용 중인 모델이 Fit Curve 라이브러리에 있는 모델이 아닌 경우에만 작동합니다. (그렇다면 Nonlinear는 이 스크립트가 제공하지 않는 이름으로 모델이 지정될 것으로 예상하는 Fit Curve를 시작합니다.) 실제 모델이 더 복잡하다는 귀하의 주장에 따라 저는 그럴 기회를 잡았습니다. Fit Model 라이브러리에 없고 다음 스크립트를 작성했습니다.
Names Default to Here( 1 );
dlg = Column Dialog(
Title( "Nonlinear Regression" ),
yCol = Col List( "Y, Response",
Data Type( Numeric ),
Min Col( 1 )
),
xCol = Col List( "X, Predictor Formula",
Data Type( Numeric ),
Min Col( 1 ),
Max Col( 1 )
)
);
If( dlg["Button"] != 1,
Throw( "User cancelled" );
);
Remove From( dlg );
Eval List( dlg );
dt = Current Data Table();
n fits = N Items( yCol );
formula = xCol[1] << Get Formula;
n parms = N Items( Arg( formula, 1 ) );
parm = J( n fits, n parms, . );
For( f = 1, f <= n fits, f++,
nl fit = dt << Nonlinear( Y( yCol[f] ), X( xCol[1] ), Newton, Finish );
parm[f,0] = Transpose( Report( nl fit )["Parameter Estimates"][NumberColBox(1)] << Get As Matrix );
);
As Table( parm );
먼저 JMP 데이터 테이블을 연 다음 이 스크립트를 열고 실행합니다. 모든 응답 열(귀하의 예에서는 열 2-82)을 선택하고 Y, 응답 . 모델 수식이 있는 열(귀하의 예에서는 열 1)을 클릭하고 X, 예측 공식 , . 그런 다음 클릭 좋아요 .
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용스크립트 없이도 할 수 있지만 많은 클릭이 필요합니다. 비선형 모델을 열 수식으로 이미 설정했다고 가정하고 다음 단계를 따릅니다.
- 테이블 > 스택을 선택합니다.
- 모든 응답 열(예: 2-82)을 선택하고 스택을 클릭합니다.
- 수식 복사 옵션이 선택되어 있는지 확인합니다.
- 응답과 같은 데이터 열의 이름을 입력합니다.
- 곡선과 같은 레이블 열의 이름을 입력합니다.
- 확인을 클릭합니다.
- 분석 > 특수 모델 > 비선형을 선택합니다.
- 예측 변수 열(귀하의 예에서는 83)을 선택하고 X를 클릭합니다.
- 모델 열(귀하의 예에서는 1)을 선택하고 Y를 클릭합니다.
- 곡선 열을 선택하고 기준을 클릭합니다.
- 확인을 클릭합니다.
- 이제 각 곡선에 대해 이동을 클릭합니다. (지루한 부분입니다.)
- Parameter Estimates 보고서를 마우스 오른쪽 버튼으로 클릭하고 결합된 데이터 테이블 만들기를 선택합니다.
이 프로세스는 모든 매개변수 추정치가 포함된 새 데이터 테이블을 제공해야 합니다.
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용표시,
감사합니다.
모든 확인 질문에 대한 응답은 예입니다.
수식은 무엇이든 될 수 있지만 간단하게 하기 위해 y = h*exp(-b*x^(0.65)), h 및 b를 매개변수로 사용하고 x>0이라고 가정해 보겠습니다.
실제 수식은 훨씬 더 복잡하지만 추가 복잡성이 솔루션에 영향을 주지 않아야 합니다.
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용다시 묻겠습니다. 열 1 공식에 표현된 비선형 모델( f(X) )은 무엇입니까? 두 매개 변수는 무엇입니까?
확인: 예측 변수(X)는 마지막 열이며 열 1의 수식에 사용됩니까?
확인: 개별 응답(Y)이 2-82열에 있습니까?
확인: Y = f(X)를 각 Y에 개별적으로 맞추고 각 Y에 대한 모수 추정값을 캡처하고 싶습니까?
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용예, 예측 변수가 다른 열에 있습니다.
원하는 경우 열 83이라고 부를 수 있습니다.
그리고 내 목표 출력이 연관된 신뢰 구간과 함께 열당 두 매개변수의 가장 적합한 값을 보여주는 테이블이라고 가정합니다.
Re: 스크립트? 비선형 모델 열 수식을 여러 열에 적용열 1에 수식으로 저장된 비선형 모델은 무엇입니까? 이 공식은 일반적으로 예측 변수의 함수입니다. 예측 변수 값을 포함하는 열은 무엇입니까?
이 경우가 간단하다면 스크립트를 작성할 수 있습니다.