チームの皆さん、こんにちは。
私はこの投稿で共有されているDixon QテストのJSLスクリプトを使用しています。
行が「非表示」および「除外」としてマークされている場合、スクリプトが失敗することがわかりました。これは、データをフィルタリングするための標準的なJMPワークフローです。
問題:
- 行が除外された場合、スクリプトは以下をスローします。
「空の挿入は、アクセスまたは「Assign」の評価において、行または列全体に対して行う必要があります。yRow[del]」
観察:
- このスクリプトは「Get As Matrix」を使用してすべての行を抽出します。
- その後、除外された行を削除しようとします
- これにより、「yVal」と「yRow」の間でインデックスの不一致が発生します。
期待される動作:
スクリプトはJMPの行状態(配布プラットフォームなど)を尊重し、除外されていない行のみを操作する必要があります。
回避策:
- 行を完全に削除すると
- 表示行のサブセット化は機能します
しかし、どちらも、行の除外が望ましい規制されたワークフローには理想的ではありません。
リクエスト:
このスクリプトを更新して、除外された行を適切に処理できるようにすることは可能でしょうか?
参考までにスクリーンショットを添付します。
ありがとう、
93行目を変更
yRow = 1 :: N Row( yVal );
に
yRow = (1 :: N Row( yVal ))`;
結果が正しいかどうかは確認していませんが、少なくともエラーは発生しました。
こんにちは、 @jthi さん。
修正していただき、改めてありがとうございました。完璧に動作しました。
可能であれば、「yRow」を転置することで除外された行の問題が解決する仕組みについて、もう少し詳しく説明していただけますでしょうか?その根本的な動作をより深く理解したいと考えています。
前もって感謝します!
よろしくお願いいたします。
サイ・クマール
yvalとyrowを出力すると、それらが似ていないことがわかります(yrowを転置しない限り)。また、行列に対してDim()関数を使用して、それらがどのように異なるかを確認することもできます。
//:*/
show(yval,yrow);
/*:
yval = [59, 61, 55, 66, 52, 60, 61, 51, 60, 61, 56, 65, 63, 58, 59, 61, 62, 65, 63, 62, 63, 64, 65, 64, 68, 64, 69, 62, 64, 67, 65, 66, 62, 66, 65, 60, 68, 62, 68, 70];
yrow = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40];
それから、まあまあなエラーメッセージに基づいて、私は推測でやってみた。
Inserting an empty must be to whole row or column in access or evaluation of 'Assign' , yRow[del] = /*###*/[] /*###*/
移調せずにやることもできると思います
yRow[0, del] = [];
スクリプトガイド > データ構造 > JSLスクリプトにおける行列 > 行列の添え字

Dixon Qテストは、JMP Marketplaceのアドインとして利用可能です。実行方法は以下のとおりです。
アドインをインストールする
- JMPマーケットプレイスへアクセスしてください: https://marketplace.jmp.com/appdetails/Dixon+Outlier+Tests
- アドインをダウンロードし、ファイルをダブルクリックしてインストールしてください。
注: このアドインには JMP 17以降 (JMP 20まで対応)
このバグは、JMP Marketplace 用の拡張機能を作成するために古いスクリプトを最新化した際に発見されました。(宣伝してくれた@txnelson さんに感謝します!)解決策はまさに@jthi さんが提案した通りです。