목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?안녕 모두,
신뢰도 추정을 위한 스크립트를 만들고 싶습니다. 내 작업 중 하나는 추정 분위수/확률을 평가하는 것입니다.
이 표현식(아래 코드 참조)에서 {0, 1, 2, 3}과 같이 명시적으로 목록을 사용하여 모든 범주를 나열하면 표현식이 제대로 작동합니다. 그러나 목록에 변수를 사용한 다음 코드에서 목록을 명시적으로 작성하는 대신 변수를 사용하면 식이 작동하지 않습니다.
다음은 예입니다.
다음 코드는 잘 작동합니다.
Lognormal Estimate Probability( Profile, {1000}, {0 ,1, 2, 3} )
다음 코드는 작동하지 않습니다.
list_Category_num = {0 ,1, 2, 3}
Lognormal Estimate Probability( Profile, {1000}, list_Category_num )
이 포럼을 검색하여 지금까지 "eval()", "eval list()", "eval expr()"과 같은 명령을 사용해 보았지만 여전히 문제가 지속됩니다.
다음은 전체 코드 본문입니다.
Fit Life by X(
// Set distribution and parameters
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
// Fit Lognormal and set confidence interval
<<FIT lognormal=""></FIT>
당신의 도움을 주셔서 대단히 감사합니다.
고급 통계 모델링자동화 및 스크립팅데이터 탐색 및 시각화실험 설계신뢰성 분석윈도우Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?기술 지원에 문제를 보고해 주셔서 감사합니다. @Bhume_Chant
그리고 "프로필"을 놓쳤습니다. 당신의 관찰이 맞습니다. JMP 16에서는 "프로필"이 필요합니다. 그리고 그것은 "Likelihood CI" 유형을 선택하는 것입니다. 스크립트에 "프로필"을 추가하십시오.

JMP 17부터는 "프로필"이 더 이상 필요하지 않습니다. Wald 및 Lifelihood CI가 모두 보고됩니다.
Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?펭수님 정말 감사합니다!
먼저 제안하신 대로 JMP 지원팀에 이메일을 보냈습니다. 이 케이스에는 케이스 번호가 TS-00030985로 지정되었습니다.
둘째, 플랫폼 오브젝트 래핑과 메시지 래핑에 대해서도 자세히 설명해주셔서 정말 감사합니다. 앞으로 JSL을 작성해야 할 때 이 중요한 연습을 기억할 것입니다.
그런데 보여주신 코드에 관해서는 둘 다 작동하지만 다음과 같이 {1000} 앞에 "profile"이라는 단어를 추가해야 합니다.
이 코드는 내가 사용 중인 JMP 버전에서 작동합니다.
Lognormal Estimate Probability(profile, {1000}, vvv )
이 코드는 오류를 생성하지 않지만 사용 중인 JMP 버전에서는 아무 일도 일어나지 않습니다.
Lognormal Estimate Probability({1000}, vvv )
사용 중인 JMP 버전과 관련된 "프로필"을 추가해야 하는 이유가 무엇인지 잘 모르겠습니다. 현재 이전 버전의 JMP(버전 16.2)를 사용하고 있습니다.
Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?이 문제를 제게 알려주셔서 감사합니다. @Mark_Bailey !
@Bhume_Chant 먼저 연락주세요 support@jmp.com 이 문제를 보고합니다. 현재 프로그램은 리터럴 숫자 목록이나 변수 목록과 같은 숫자 목록을 기대하지만 목록인 변수는 기대하지 않습니다. 이 문제를 해결해야 합니다. 기술 지원에 문의하십시오. 감사합니다.
현재 문제를 해결하기 위해 Mark가 제안한 것과 일치하는 해결 방법이 있습니다. 그러나 유사한 기술이 "eval" 동작이 바람직하지 않은 다른 위치에서 유용할 수 있도록 조금 더 통찰력을 제공합니다. 다음은 작동하는 두 가지 코드 스닙입니다.
여기가 첫 번째
vvv = {0,1,2,3};
obj = Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
);
eval(
substitute(
expr(
obj << set scriptables(
{
Lognormal Estimate Probability( {1000}, vvv )
}
)
),
expr(vvv), vvv
)
);
다음은 두 번째,
vvv = {0,1,2,3};
eval(
substitute(
expr(
Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
<< set scriptables(
{
Lognormal Estimate Probability( {1000}, vvv )
}
)
)
),
expr(vvv),vvv
)
);
이를 스크립트와 비교하면 차이점은 래핑된 표현식입니다. 위의 두 스닙은 플랫폼 개체 외부를 래핑합니다. 스크립트는 메시지인 표현식을 래핑합니다.
이제 메시지 래핑이 작동하지 않는 이유를 설명합니다. 메시지가 eval-substitute 트릭의 측면에 래핑될 때 이 eval-substitute가 의미하는 바를 인식하는 것은 여전히 플랫폼 구현의 자비입니다. 이 경우 플랫폼은 표현식이라고 예상하지 않습니다. 그리고 나는 그것이 대부분의 플랫폼에 사실이라고 생각합니다.
따라서 이 사례에서 배운 내용을 바탕으로 플랫폼 개체 수준 위에서 eval-substitute 트릭을 사용하는 것이 좋습니다.
Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?이제 작동합니다!
매우 감사합니다!
Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?다음은 스크립팅 인덱스의 예에서 다른 방법입니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Reliability/Devalt.jmp" );
obj = dt << Fit Life by X(
Y( :Hours ),
X( :Temp ),
Distribution( Lognormal ),
Censor( :Censor ),
Relationship( Arrhenius Celsius ),
Freq( :Weight )
);
p = obj << Probability( Lognormal, 30000, 10 );
Show( p );
Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?플랫폼 실행 후 메시지 전송을 이동해야 합니다. 이 같은:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Reliability/Devalt.jmp" );
obj = dt << Fit Life by X(
Y( :Hours ),
X( :Temp ),
Distribution( Lognormal ),
Censor( :Censor ),
Relationship( Arrhenius Celsius ),
Freq( :Weight )
);
val = {0,1,2,3};
Eval(
Substitute(
Expr(
obj << Set Scriptables( {Lognormal Estimate Probability( Profile, {1000}, vvv ) } );
),
Expr( vvv ), val
)
);Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?안녕하세요 Mark, 도움을 주셔서 대단히 감사합니다. 하지만 이 문제에 대해 좀 더 도와주실 수 있나요?
위의 스크립트를 삽입하려고 시도했지만 오류는 없지만 결과도 표시되지 않습니다. 어디서 잘못했는지 모르겠습니다.
다음은 의도한 대로 작동하는 스크립트입니다.
Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
<< set scriptables(
{
Lognormal Estimate Probability( Profile, {1000}, {0,1,2,3} )
}
)
);의도한 결과는 다음과 같습니다.

이제 "Lognormal Estimate Probability" 부분을 아래와 같이 스크립트로 교체해 보았습니다.
vvv = {0,1,2,3};
Fit Life by X(
Distribution( Lognormal ),
Nested Model Tests( Location and Scale ),
Y( :ResponseVariable ),
X( :Category ),
Censor( :Censor ),
Censor Code( 1 ),
<< set scriptables(
{
eval(
substitute(
expr(Lognormal Estimate Probability( Profile, {1000}, vvv )),
expr(vvv), vvv
)
)
}
)
);오류는 없지만 아무 일도 일어나지 않습니다.

참고로 결과 생성에 사용한 더미 데이터도 첨부했습니다.
매우 감사합니다.
Re: 목록의 변수가 "Fit Life by X"에서 분위수/확률 추정에 작동하도록 하려면 어떻게 해야 합니까?모든 함수가 호출될 때 변수 인수를 평가하는 것은 아니므로 인수에 대해 리터럴 값을 사용해야 합니다. 그동안 식을 사용하여 이 문제를 해결할 수 있습니다. 사람들은 스타일이 다릅니다. 다음은 아이디어를 설명하는 한 가지 예입니다.
list_Category_num = {0 ,1, 2, 3};
Eval(
Substitute(
Expr( Lognormal Estimate Probability( Profile, {1000}, vvv ) ),
Expr( vvv ), list_Category_num
)
);