「Fit Life by X」でリストの変数を分位点/確率推定に機能させるにはどうすればよいですか?こんにちは、みんな、
信頼性推定用のスクリプトを作成したいと思います。 私のタスクの 1 つは、推定分位数/確率を評価することです。
これらの式 (以下のコードを参照してください) では、{0, 1, 2, 3} などの list を使用してすべてのカテゴリを明示的にリストすると、式は正常に機能します。 ただし、リストに変数を使用し、コード内でリストを明示的に記述する代わりに変数を使用すると、式は機能しません。
ここに一例を示します。
次のコードは正常に動作します。
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
そして「プロフィール」を忘れていました。 あなたの観察は正しいです。 JMP16では「プロファイル」が必要となります。 それは「尤度CI」タイプを選択することです。 スクリプトに「プロファイル」を追加してください。

JMP 17 以降、「プロファイル」は必要なくなりました。 Wald CI と Lifelihood CI の両方が報告されます。
Re: 「Fit Life by X」でリストの変数を分位点/確率推定に機能させるにはどうすればよいですか?ペンさん、本当にありがとうございました!
まず、ご提案どおり JMP サポート チームにメールを送信しました。 このケースにはケース番号 TS-00030985 が割り当てられました。
2つ目は、プラットフォームオブジェクトのラッピングやメッセージのラッピングについても詳しく解説していただき、とてもありがたかったです。 将来 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 が提案したことに沿った回避策を次に示します。 ただし、「評価」動作が望ましくない他の場所でも同様の手法が役立つ可能性があるため、もう少し洞察を提供します。 以下に、機能する 2 つのコード スニペットを示します。
ここが最初です
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
)
);
こちらが2つ目です、
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
)
);
これらをスクリプトと比較してください。違いは、どの式がラップされるかです。 上記の 2 つのスニップは、プラットフォーム オブジェクトの外側にラップされています。 スクリプトはメッセージである式をラップします。
ここで、メッセージの回り込みが機能しない理由を説明します。 メッセージが eval-substitute トリックの側でラップされている場合、この eval-substitute が何を意味するかを認識するかどうかはプラットフォーム実装の判断に委ねられます。 この場合、プラットフォームはそれが式であることを想定しません。 そして、それはほとんどのプラットフォームに当てはまるのではないかと思います。
したがって、このケースから学んだことに基づいて、私の提案は、プラットフォーム オブジェクト レベル以上で eval-substitute トリックを使用することです。
Re: 「Fit Life by X」でリストの変数を分位点/確率推定に機能させるにはどうすればよいですか?それは今すぐ機能します!
どうもありがとうございます!
Re: 「Fit Life by X」でリストの変数を分位点/確率推定に機能させるにはどうすればよいですか?以下は、Scripting Index の例の別の方法です。
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」でリストの変数を分位点/確率推定に機能させるにはどうすればよいですか?こんにちは、マーク、ご協力ありがとうございます。この問題についてもう少し手伝ってもらえますか?
上記のスクリプトを埋め込もうとしましたが、エラーはありませんが、結果も表示されません。 どこが間違っていたのかわかりません。
意図したとおりに動作するスクリプトは次のとおりです。
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} )
}
)
);意図した結果は次のとおりです。

ここで、「対数正規推定確率」の部分を以下のようなスクリプトに置き換えてみました。
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」でリストの変数を分位点/確率推定に機能させるにはどうすればよいですか?すべての関数が呼び出し時に可変引数を評価するわけではないため、引数にはリテラル値を使用する必要があります。 それまでの間、式を使用してこの問題を解決できます。 人にはさまざまなスタイルがあります。 このアイデアを説明するための 1 つの例を次に示します。
list_Category_num = {0 ,1, 2, 3};
Eval(
Substitute(
Expr( Lognormal Estimate Probability( Profile, {1000}, vvv ) ),
Expr( vvv ), list_Category_num
)
);