AICを新しいデータテーブルにエクスポートするスクリプト<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Fit Parametric Survival プラットフォームで複数のモデルの AIC 結果を比較しています。 この時点で、複数のウィンドウを生成してすべてのモデルを実行するスクリプトがあり、AIC およびその他の出力を Excel ファイルに 1 つずつコピーして貼り付けます。 日常的には、これは時間のかかる無駄なプロセスです。 私は JSL の初心者です。複数のレポート ウィンドウから AIC やその他の情報を抽出して 1 つのデータ ウィンドウに保存する自動プロセスの作成を手伝ってくれる人はいますか? 私が評価している追加情報は、パラメーターの収束、使用された観測値、および打ち切られた値と無検閲の値の数です。
助けてくれてありがとう!
VBA マクロを使用してデータを JMP にインポートし、JMP 結果をワイブル分析の Excel シートに戻すこんにちは、みんな、
まず最初に、スクリプト作成の結果を共有していただき、データ クエリ プロセスを自動化できるようになったことに感謝したいと思います。私は VBA マクロ Excel を使用してテーブルを JMP にコピーしてワイブル分析を実行し、スケールと形状の値を取得して VBA マクロ Excel ファイルにコピーしています。以下は私が使用したコードです。 他の人にも役立つことを願っています。
VBA-マクロエクセル。
サブJMP()
JMP.Application としてアプリケーションをディムします
JMP.Document としての Dim doc
app = CreateObject("JMP.Application") を設定します
app.Visible = True
Set doc = app.OpenDocument("C:\Users\ABC\Desktop\WS.jsl")
エンドサブ
JSL スクリプト (WS.jsl 形式で保存)
//! <<<以下の JSL スクリプトを自動的に実行する場合、それは JSL ファイルの 1 行目にある必要があります>>>。
dt = Open( "C:\Users\ABC\Desktop\Book1.xlsm" ); <<< JSL は Excel ファイルを JMP データテーブルに開き、以下のワイブル分析を実行します>>>
fm = 寿命分布(
Y( :Name( "TTF,Hr" ) ),
センサー( :センサー )、
検閲コード(1)、
周波数( :周波数 )、
<<フィットワイブル、
信頼区間法(尤度)、
<<スケールの設定(ノンパラメトリック)、
<<プロットを抑制(ノンパラメトリック)、
インターバルタイプ(同時)、
<<スクリプト可能要素を設定(
{確率ペーパー( Profiler( 1, Confidence Intervals( 1 ), Term Value( Name( "TTF,Hr" )(4846.6174375, Lock( 0 ), Show( 1 )) ) ) )、
ワイブル分布( Profiler( 1, Confidence Intervals( 1 ), Term Value( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ),
ワイブル分位数(プロファイラー( 1, 信頼区間( 1 ), 項値(確率( 0.5, ロック( 0 ), 表示( 1 ) ) ) ),
ワイブル ハザード( プロファイラー( 1, 信頼区間( 1 ), 項値( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) )、
ワイブル密度( プロファイラー( 1, 項値( Name( "TTF,Hr" )(4846.6, Lock( 0 ), Show( 1 )) ) ) ), カスタム推定( ワイブル, 0 )}
)、
SendToReport(
Dispatch( {"分布の比較"}, "寿命分布", FrameBox, {グリッド ラインの順序( 2 ), 基準線の順序( 3 )} ),
Dispatch( {"統計", "モデル比較"}, "", TableBox, {列ごとに並べ替え( 2, 1 )} )
)
);
// パラメティック推定データを新しいデータ テーブルに自動的にコピーするには (例: untitled.jmp 形式)
fmrep = fm << レポート;
fmrep[Outline Box("Parametric Estimate ?" )][Table Box( 1 )] << 結合データテーブルを作成します。
dt1 = 現在のデータテーブル();
dt1 << SaveAs( "c:\Users\ABC\Desktop\AAA.xlsx" ); // untitled.jmp ファイルを Excel ファイル (この場合は AAA.xlsx として名前を付けました) としてデスクトップの場所に保存します。
Close( dt, 保存なし );
Close( dt1, 保存なし );
上記のスクリプトは私にとっては完璧に機能しています。
最近発見したことと学んだことをこのコミュニティに貢献したいと考えていました。
ありがとう!
ジム
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトユーレカ!!! ジェフ、マーク、イアン、ありがとう! 皆さんは短い時間で多くのことを教えてくれて、何時間もの不必要なクリック、コピー、ペーストを節約できる解決策を教えてくれました。
さて、モデルが収束しない場合に警告テキスト用の列を追加する方法を知っている人がいたら、それはおまけです。 しかし、私たちが達成したことに満足しています!
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトプラットフォーム起動で By() を使用すると、JMP は結果のプラットフォームのリストを返します。 これがないと、JMP はリストではなく単一のプラットフォームを返します。
ここの例では By() を使用しているため、プラットフォームのリストにインデックスを付けて、グループごとに特定のプラットフォームを参照する必要がありました。 それが次の [1] です。
fmrep1[1][Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;どのプラットフォームの起動でも By() を使用していないため、[1] は必要ありません。
すべてのテーブルを 1 つのデータ テーブルにするには、すべてのレポートを 1 つのウィンドウで開始するのが最も簡単です。
New Window() を使用して独自のレポート ウィンドウを作成できます。
dt = Open( "$SAMPLE_DATA\Reliability\Tobit2.jmp" );
myWin = New Window( "My Window",
fm1 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm2 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
fm3 = dt << Fit Model(
Y( :YLow, :YHigh ),
Effects( :age, :liquidity ),
Personality( Parametric Survival ),
Distribution( LogNormal ),
Run( Likelihood Ratio Tests( 1 ) ),
);
);
combined = myWin[Outline Box( "Parametric ?" )][Table Box( 1 )] << make combined data table;
レポート ウィンドウへの参照があるため、レポート オブジェクトを取得する必要がないことに注意してください。マイウィン、 すでに。
元の投稿で示したものと同様のテーブルを取得するには、結合データ テーブルの作成から取得したテーブルを Split() する必要があります。
combined <<Split(
Split By( :Column 1 ),
Split( :Column 2 ),
Remaining Columns( Drop All )
);
行がどのモデルを表しているかを示す列も必要だと思います。 実行するモデルをどのように決定するかによっては、そのリストを自分で保持し、その情報を含む列をデータ テーブルに自分で追加する方が簡単な場合があります。
指定したモデルがわからない場合は、パラメトリック生存レポートからそれを抽出することは可能ですが、それほど簡単ではありません。
-ジェフ
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトよし、近づいてきたぞ。 間違ったスクリプトを貼り付けたにもかかわらず、Jeff は正しい答えをくれました。 次のスクリプトは、サンプル データに必要なテーブルを提供します。
dt =開ける( "$SAMPLE_DATA/信頼性/Tobit2.jmp" ) ;
// ランダムな「by」列を追加します
コル= dt <<新しい列( "に" 、数値、公称、方式(ランダム整数( 1 、 2 ))) ;
// 非表示のレポートを作成する
FM = dt <<フィットモデル(
Y ( : Y低、 : Y高) 、
効果( :年、 :流動性) 、
に( :に) 、
人格(パラメトリックサバイバル) 、
分布(対数正規化) 、
走る(尤度比検定( 1 ) ) 、
) ;
// レポートレイヤーへの参照を取得します
FMレップ= FM <<報告;
FMレップ[ 1 ][アウトラインボックス( 「パラメトリック?」 )][テーブルボックス( 1 )] <<結合データテーブルを作成する;
近い( dt 、保存しない) ;
// このスクリプトは想定どおりに動作します。
しかし、削除するとなぜそうなるのですかコル= dt <<新しい列( ...) とに( :に) 、スクリプトはテーブルを生成しなくなったのでしょうか?
私の目標は、複数のレポートから 1 つの結合されたデータ テーブルを作成することなので、次のサンプル スクリプトを機能させるにはどうすればよいですか。
dt =開ける( "$SAMPLE_DATA/信頼性/Tobit2.jmp" ) ;
// 非表示のレポートを作成する
FM1 = dt <<フィットモデル(
Y ( : Y低、 : Y高) 、
効果( :年、 ) 、
人格(パラメトリックサバイバル) 、
分布(対数正規化) 、
走る(尤度比検定( 1 ) ) 、
) ;
FM2 = dt <<フィットモデル(
Y ( : Y低、 : Y高) 、
効果( :流動性) 、
人格(パラメトリックサバイバル) 、
分布(対数正規化) 、
走る(尤度比検定( 1 ) ) 、
) ;
FM3 = dt <<フィットモデル(
Y ( : Y低、 : Y高) 、
効果( :年、 :流動性) 、
人格(パラメトリックサバイバル) 、
分布(対数正規化) 、
走る(尤度比検定( 1 ) ) 、
) ;
// レポートレイヤーへの参照を取得します
fmrep1 = FM1 <<報告;
fmrep1 [ 1 ][アウトラインボックス( 「パラメトリック?」 )][テーブルボックス( 1 )] <<結合データテーブルを作成する;
みんなありがとう!!!
日本
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトこの行には添字エラーがいくつかあります。
fmrep[1]["Parameter Estimates"][TableBox(1)] << Make Combined Data Table;
代わりに次のようにする必要があります。
fmrep[Outlinebox("Parametric ?")][TableBox(1)]<<make combined data table;アウトラインボックス(1)を使用することも、完全なタイトルをそこに入力することもできますが、ワイルドカード「?」は使用できません。もう少し一般的になります。
-ジェフ
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトマークとイアン、お時間をいただきありがとうございました! ただし、以下のスクリプトの私のバージョンではまだテーブルが生成されないため、これはまだ正しく理解できません。 2 つの例を組み合わせてみました。
dt =開ける( "$SAMPLE_DATA/ビッグクラス.JMP" ) ;
ビブ= dt <<二変量(
Y ( :身長) 、
バツ( :重さ) 、
フィットライン、
に( :セックス)
) ;
FMレップ= FM <<報告;
FMレップ[ 1 ][ 「パラメータの推定値」 ][テーブルボックス( 1 )] <<結合データテーブルの作成;
何か案は?
ありがとう、
日本
Re: AIC を新しいデータ テーブルにエクスポートするスクリプト特定のアウトライン ボックスをターゲットにするために下付き文字で「パラメーター推定」を使用しましたが、代わりに「パラメトリック生存フィット - モデル 633」を使用します。
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトおっと! 日記ではなく表が欲しかったようですね。 この場合、「結合データテーブルを作成する」の方がおそらくより直接的です。
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトマークの説明を基にして、次の 1 つの方法を示します。
dt =開ける( "$SAMPLE_DATA/信頼性/Tobit2.jmp" ) ;
// ランダムな「by」列を追加します
コル= dt <<新しい列( "に" 、数値、公称、方式(ランダム整数( 1 、 2 ))) ;
// 非表示のレポートを作成する
FM = dt <<フィットモデル(
Y ( : Y低、 : Y高) 、
効果( :年、 :流動性) 、
に( :に) 、
人格(パラメトリックサバイバル) 、
分布(対数正規化) 、
走る(尤度比検定( 1 ) ) 、
見えない
) ;
// レポートレイヤーへの参照を取得します
FMレップ= FM <<報告;
// これはリストになり、「by」グループごとに 1 つの項目になります
概要タイトル= FMRep <<タイトルの取得;
// 空の表示ボックスを作成します
ルブ=ラインアップボックス( Nコル( 1 )) ;
// 必要なコンテンツを追加します
ために(ああ= 1 、ああ<= Nアイテム(概要タイトル) 、ああ++、
ルブ<<追加(
アウトラインボックス(概要タイトル[ああ】 、
( FMRep [ああ])[テーブルボックス( 1 )] ;
) ;
) ;
) ;
近い( dt 、保存しない) ;
// 日記を作成する
新しい窓( "報告" 、 <<ジャーナル、ルブ) ;
唯一の困難は、どのテーブル ボックスを含めるかを知ることです。 これを確認するには、アウトライン ノードの三角形を右クリックし、[編集] > [ツリー構造の表示] を選択します。
Re: AIC を新しいデータ テーブルにエクスポートするスクリプト早速のご返信ありがとうございます、マークさん!! これは非常に役に立ち、勉強になりましたが、最初は最後のビットを次のように書き直すまでデータテーブルが生成されませんでした。
報告(ビブ[ 1 】 )[ 「パラメータの推定値」 ][テーブルボックス( 1 )] <<結合データテーブルの作成;
この例に従ってください: 46983 - By 変数を使用する場合に、分布レポートから概要統計の結合データ テーブルを作成する方法。
しかし、おそらく必要なテーブルにタイトルがないため(例:「パラメータ推定値」)、それを自分のワークフローに変換することはできません。 以下は 1 つのレポートの例です。 丸で囲った部分がデータテーブルにしたい部分です。 私が使用しているスクリプトのサンプルを下部に示します。 課題は、一度に生成された約 100 のレポートからの丸で囲まれたデータを 1 つのデータ テーブルに追加する方法です。 探している最終的なテーブルのスクリーンショットを追加しました。現在 Excel に手動で入力しています (うんざり)。 各行にモデル番号 (例: 633) を追加する方法も必要です。
ご協力いただきありがとうございます。
日本


私が使用しているスクリプトの例は次のとおりです。
フィットモデル(
検閲( :分散した) 、
検閲コード( 「0」 ) 、
Y ( :分散までの日数) 、
効果( :重さ、:年、:ソース、:転座、:処理、:地質学、:サイト、 ) 、
人格(パラメトリックサバイバル) 、
分布(フレシェ) 、
走る(尤度比検定( 1 ) ) 、
レポートに送信(
急送(
{} 、
パラメトリックサバイバルフィット、
アウトラインボックス、
{タイトルの設定( 「パラメトリック サバイバル フィット - モデル 632」 )}
)
)
) ;
フィットモデル(
検閲( :分散した) 、
検閲コード( 「0」 ) 、
Y ( :分散までの日数) 、
効果( :重さ、:年、:ソース、:転座、:処理、:地質学、 ) 、
人格(パラメトリックサバイバル) 、
分布(フレシェ) 、
走る(尤度比検定( 1 ) ) 、
レポートに送信(
急送(
{} 、
パラメトリックサバイバルフィット、
アウトラインボックス、
{タイトルの設定( 「パラメトリック サバイバル フィット - モデル 633」 )}
)
)
) ;
Re: AIC を新しいデータ テーブルにエクスポートするスクリプトレポート内の AIC 値を含むテーブルを右クリックし、[結合データ テーブルの作成] を選択することで、この結果を対話的に生成できます。
同等のスクリプトでは、メニュー コマンドと同じ名前のメッセージを、レポート内で AIC 値を表示する役割を担う表示ボックス オブジェクトに送信する必要があります。 このアイデアについては、次の例を使用してください。
- オープンビッグクラス
- 身長と体重、性別をグループ化変数として持つ二変量プラットフォームを立ち上げる
- 両方のグループに線を合わせる
- レポートレイヤーへの参照を取得します
- レポート内の表示ツリーに最初のテーブルのレベルまで繰り返し添字を付けます (パラメータ推定値など)。
- メッセージを送る
dt =開ける( "$SAMPLE_DATA/ビッグクラス.JMP" ) ;
ビブ= dt <<二変量(
Y( :身長) 、
バツ( :重さ) 、
フィットライン、
に( :セックス)
);
biv4 =ビブ<<報告;
ビバー[ 1 ][ 「パラメータの推定値」 ][テーブルボックス( 1 )] <<結合データテーブルの作成;