上級 JSL に関するヘルプが必要です - ジャーナルからデータを読み取るこんにちは
これまで GPT4.0 の助けを借りて作成されたが動作しない JSL スクリプトに関する支援が必要です。
スクリプトの目的: 単一の分析ジャーナルを取得し、そこからデータを CSV に抽出します。
この最初のラウンドでは、カテゴリ分析のみを含むジャーナルに焦点を当てます。
ジャーナルには、カテゴリ変数の 1 つまたは複数のカテゴリ テーブルと、それに続く共有チャートおよび頻度チャートが含まれます。テーブルからデータを抽出することだけに興味があります。実際の実装では 5 つのクラスの多項式クラスを扱いますが、サンプル ジャーナルとスクリプトでは、簡単にするために 2 つのクラス (バイナリ) に減らしています。
カテゴリテーブルには、指定されたパラメータ値に対して、カウント、パーセント、p値の3つの行が含まれています。pvalue<= 0.05の場合にのみ、パーセント値を抽出することに関心があります。
出力を次の形式で csv に保存する必要があります:
ジャーナル名、パラメータ名、パラメータ値1、パーセントクラス0、パーセントクラス1
ジャーナル名、パラメータ名、パラメータ値2、パーセントクラス0、パーセントクラス1
スクリプトは、そのジャーナルに存在するカテゴリテーブルの数を理解し、すべてのテーブル情報を抽出する必要があります(p値<= 0.05の場合のみ)
これを調べる時間が限られている人のために;
スクリプトはエラーなしで実行されますが、期待どおりにデータが抽出されません。
主な問題はスクリプトの最後(行 155-175)にあります。 2 つの関数が Type(journal) に基づいて処理するように構築されています。 Type は正しく取得されていると思いますが、関数に適切に接続できません。
注: 私のフェーズ2は同様の意図で構成されますが、ロジスティック回帰の結果を含むジャーナルが含まれます。
まだ投稿していません。まずはこの問題が解決されることを期待しています。
添付されているのは、JMP サンプル データ ライブラリの航空機事故ジャーナルと、2 つのクラス レベル用に調整されたサンプル スクリプトです。
感謝します
アルトゥグ・バイラム
自動化とスクリプト結果の共有と伝達ウィンドウズRe: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るジャーナルの作成に使用された JMP レポートではなく、ジャーナルからこれらを抽出する特別な理由があるのでしょうか?
Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るはい、ジャーナルのサイズは顧客とのコミュニケーションのためにかなり小さくなっています。ジャーナルの形式は 2 種類あり、カテゴリまたは連続パラメータ分析のいずれかが含まれています。レポートと比較して、ジャーナルからデータを抽出するのはそれほど難しくないと思います。
Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るレポートから、基本的にはテーブルを保存するだけでほぼ完了します (最終結果によってはクリーンアップが必要になる場合があります)

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Aircraft Incidents.jmp");
fg = dt << Fit Group(
cg1 = Categorical(
ChiSquare Test Choices("Pearson Only"),
X(:Broad Phase of Flight),
Responses(:Fatal),
Cell Chisq(1),
Share Chart(1),
Frequency Chart(1),
Legend(0)
),
Categorical(
ChiSquare Test Choices("Pearson Only"),
X(:Weather Condition),
Responses(:Fatal),
Cell Chisq(1),
Share Chart(1),
Frequency Chart(1),
Legend(0)
),
<<{Arrange in Rows(2)}
);
dt_cont = cg1 << Save Contingency Table();Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取る私は大規模な分析を実行しており、スクリプト プロセスを複数のフェーズに分割しています。すでに多くの履歴分析結果が生成されていますが、分析してから要約レポートを作成する (可能な場合) という (現在の問題に対する) ソリューションは検討していません。単に、それらを再実行するのが現実的ではないためです。むしろ、この要約スクリプト (ジャーナルからデータを抽出する) が分離されている方がよいので、説明した理由で機能しています。
私のジャーナルには複数のレポートが含まれており、複数のジャーナルがあります。全体として、大量のデータがあります。ジャーナル ルートは私の作業に最適です。スクリプトを使用してこれを行う必要があります。そうしないと、実用的ではありません。現時点では、カテゴリ テーブルの 1 つのジャーナルのみを探しています。現在のエラーを理解し、1 つのジャーナルで機能するスクリプトを作成したら、それを拡張してカテゴリ タイプのすべてのジャーナルを処理できるはずです。今後のもう 1 つのフェーズでは、ジャーナルごとに複数の多項ロジスティック回帰を含む 2 番目のジャーナル タイプも同様に必要です。
スクリプトに何か問題があり、ジャーナルがサブ関数に伝達されません。このエラーはまだ簡単なものだと考え、期待していました。スクリプト インデックスも調べて、他に何か役立つものがないか確認しましたが、運がありませんでした。
Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るテーブル ボックスを扱っていないので、スクリプトが何をしているかわかりません (非常に簡単です)。関数も正しく定義されていないため、関数が期待どおりに実行されない可能性があります。
私はおそらく、分割表が使用する表示ボックスをいじる気にもならず、テキストから解析するだろう。
Names Default To Here(1);
j = Current Journal();
agb = j["Fatal By Broad Phase of Flight",AlignmentGridBox(1)];
txt = agb << get text;
lines = Words(txt, "\!N");
Remove From(lines, 1, 3);
res = {{}};
For Each({line}, lines,
res_line = {};
vals = Words(line, "}\!t");
Insert Into(res_line, Remove From(vals, 1)); // param name?
Insert Into(res_line, Remove From(vals, 1)); // param value?
Insert Into(res_line, Words(Remove From(vals, 1)[1], ",")); // class1
Insert Into(res_line, Words(Remove From(vals, 1)[1], ",")); // class2
Insert Into(res, Concat items(res_line, "\!t"));
);
dt = Open(Char To Blob(Concat Items(res, "\!N")), "text");Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るこんにちは、Jarmoさん。
まず、サポートと支援に感謝します。ここでのあなたのアプローチを自分のスクリプトに実装するのに少し時間をかけたいと思いました。私はそれを適応させることができましたが、さらにいくつか質問があります。ただし、解決策として上記を選択します。
私のフォローアップの質問:
私のフェーズ 1 は純粋なカテゴリ テーブルのジャーナルであるため、テーブル数 / ジャーナル数は可変です。
1. 特定のジャーナルのカテゴリテーブルの数を取得する方法(上記の例では 2 になります)
2. このようなカテゴリ テーブルの名前を取得する方法 (例: 「飛行の広範なフェーズによる致命的」および「気象条件による致命的」)
3. 私のフェーズ 2 は、多項ロジスティック回帰の純粋なコレクションになります。サポートから取得したスクリプトは直接実行されませんでしたが、実行する前に少し時間をかける必要があります。サンプル データも準備できます。そのため、これにプレースホルダーを配置します。
4. より高度なスクリプトを作成する最も早い方法は何ですか? たとえば、私の例では、プロパティ ボックスによって、関連する可能性のある JMP 関数名が明らかになりました。私はスクリプト インデックスをかなり使用していますが、私のケースではあまり効果的ではありませんでした。また、以前のバージョンにはスクリプト ドキュメントがあったことを覚えていますが、その最新バージョンがどこにあるかはわかりません。
再度、感謝します。
Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取る1. XPathを利用するのも一つの選択肢
obs = (j << XPath("//OutlineBox[contains(text(), 'Fatal By')]"));
2. アウトラインボックス参照がある場合は、<<タイトルを取得
obs << get title;
4. JMP ヘルプのスクリプト インデックス、スクリプト ガイドを活用します (JMP ヘルプには JSL 構文リファレンスもあります)。また、現時点では、JSL の LLM は非常に信頼性が低いため (スクリプトからわかるように)、LLM に頼るべきではありません。
Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るサンプルデータにある obj 構文をそのまま試してみましたが、機能しませんでした。
名前が解決されていません: 'obj' のアクセスまたは評価中の obj、obj/*###*/
すべてのテーブルにはテーブル名に共通の文字列が含まれているため、その共通の文字列 (上記の例の「Fatal by」など) を検索できます。
動作すると、objはリストになると思うので、その場合はジャーナル内のテーブルの数を知る必要はないでしょう。
LLM については、私も同感です。最初はスクリプト構造がすぐに提示されますが、多くの部分が機能しないことがわかります。さらにイライラするのは、スクリプトが文字通り愚かになることがあるということです... コードが提供され、それに対してフィードバックを提供したり、場合によっては特定の修正を行うように指示したりします。次のラウンドでは、LLM はまったく同じ間違った解決策を提示します。私はこれを 2 回以上続けて見たと思います。
しかし、多くの場合、より単純な作業の場合は、それが私を急に動かす可能性があるため、もちろん注意しながら使い続けます。
Re: 高度な JSL に関するヘルプが必要です - ジャーナルからデータを読み取るJSL では、JMP で対話的に開始し、JMP にスクリプトを作成させます。それでも十分ではなく、もう少しスクリプトを作成したい場合は、スクリプト ガイドを簡単に参照してください。次に、スクリプト インデックスをメイン リソースとして活用し (スクリプト ガイド / JSL 構文リファレンスへのリンクもあります)、時々 LLM を参照してください。ただし、LLM は一般的に JSL に関して非常に間違っていることを理解してください。