スクリプト分析

このデモンストレーションでは、JMPでよく使われるプラットフォームで実行される分析をスクリプト化する方法を学びます。ジャーナルセクションで「コンクリートの強度と湿度データ」をクリックします。これが、このデモンストレーションのすべての例で使用するデータセットです。コンクリートの配合の種類、得られたコンクリートの強度、そしてコンクリートが乾燥したときの周囲の湿度が入っています。この表はデモンストレーション中は見ないので、横に移動しておきます。コースジャーナルに戻り、「分布分析スクリプト」をクリックします。このスクリプトでは、分布をデータテーブル「コンクリート」にメッセージとして送信し、その結果を変数「dist」に格納します。この変数は、そのオブジェクトへの参照を格納するためのものです。繰り返しますが、これは分析レイヤーのオブジェクトへの参照になります。コンクリートの種類、湿度、強度の3つの列すべてをY分析ロールに設定し、起動時に3つの列すべてに同じオプションを指定しています。しかし、レポートウィンドウを開いたときにわかるように、すべての列がこれらのオプションに対応しているわけではありません。そこで、プラットフォーム起動時の分布に関する引数からいくつか設定を行います。「スタック」は、上部の赤い三角のメニューにあるオプションです。「分布」の隣にあります。これはヒストグラムを水平方向に変更し、通常ヒストグラムの下に表示されるレポートテーブルの位置と、ヒストグラムを横に並べるか縦に並べるかを変更します。ヒストグラム自体は横に並べるか縦に並べるかです。赤い三角のメニューにある「スタック」は、スクリプトでブール値を使ってこれを無効にしているのがわかります。これはユーザーが設定で変更する非常に一般的なオプションなので、スクリプトではこれを選択することもできます。これにより、分布は常に積み重ねられます。スクリプトの結果にとって、これらがデフォルトの形式で表示されることが重要であれば、スタックをオフにすることをお勧めします。さらに、ヒストグラムを縦方向に表示するように指定しています。これは、「ヒストグラムオプション」の下にある各赤い三角のメニューで個別に設定できます。ここでチェックが入っているのがわかります。繰り返しますが、これはデフォルト設定なので、スクリプトはユーザーの設定に関わらず、JMPのデフォルト設定で表示されるようにしています。スクリプトの次の行では、分位点表示をオフにしています。分位点は連続変数にのみ適用されます。これらのサブメニューの「具体的な種類」の横にある赤い三角のメニューを見ても、「分位点表示」という言葉は見つかりません。表示オプションの「湿度」または「強度」の横にある赤い三角を見ると、通常はデフォルトで「分位点」がオンになっているはずですが、このメニューではチェックが入っていないことがわかります。これは、ブール値を使用しているためです。同様に、「外れ値ボックスプロット」は通常、連続変数に対してオンになっています。これをブール値でオフにすることで、外れ値ボックスプロットが表示されなくなります。最後に、「正規分位点プロット」を括弧で囲んだブール値で要求しました。これは通常はオンにはなりませんが、これらの変数に対して要求しました。繰り返しますが、これはプラットフォームの起動時に実行されたため、これらのコマンドに応答できる変数は応答しました。プラットフォームを起動し、分布を持つオブジェクト参照を変数に格納すると、すべての変数に一度に通信したり、個々の列または変数にメッセージを送信したりできます。これは添え字を使って行います。この行は、「分布の適合(正規)」、つまり正規分布をフィッティングする処理を3つの列すべてに送信していることを示しています。もちろん、コンクリートの種類は名義分布なので、それには反応できませんが、湿度と強度は反応します。そこで、line を実行します。すると、連続分布の両方に、適合した正規分布が重ねて表示され、適合した正規分布のアウトライン項目も表示されます。これも、赤い三角のメニューから実行するコマンドです。「分布の適合」はこのコマンドの古い名前です。JMPの新しいバージョンでは「連続適合」と呼ばれていますが、どちらもまだ機能します。ここで一つ注意したいことがあります。ログに戻りましょう。分布を起動するスクリプトを実行すると、プラットフォーム名が表示されました。これは、分析レイヤーのオブジェクト参照があることを示しています。スクリプト内で、dist にマウスポインタを置くと、それが表示されます。一方、事後に赤い三角のメニューからコマンドを実行した場合は、「スクリプトで実行可能な」結果が返されました。これで、lines と は平均値の1標本検定を実行します。赤い三角のメニューでは、コマンドは単に「平均検定」です。しかし、湿度については、標本平均値が で、標本平均値の強度が約 であるため、両方に同じ仮説平均値を検定するのは意味がありません。それでは、実際に対話形式でどのように見えるかをお見せしましょう。連続変数の横にあるどちらかの赤い三角をクリックして「平均の検定」を選択し、仮説平均値を入力します。そこで、これをキャンセルして、スクリプト エディタ ウィンドウに戻ります。行 で、平均値が に等しいことを検定し、それを分布ウィンドウの 3 列目に送信します。dist に数値を下付き文字で付けます。行 を実行します。レポート ウィンドウに移動すると、平均値に対する 1 標本 t 検定があります。次に、湿度についても、異なる仮説平均値 で同じことを行います。下付き文字の付け方は少し異なります。レポート内の位置ではなく、列名を文字列(添え字)として使用します。line を実行すると、湿度のt検定の結果が表示されます。これは、分布プラットフォームと、赤い三角のメニューのコマンドを使って分析レイヤーをスクリプト化する例です。では、一元配置プラットフォームを見てみましょう。分布スクリプトと分布レポートを閉じますが、引き続きコンクリートデータテーブルを使用します。ジャーナルで、一元配置分散分析スクリプトをクリックします。これは少し幅が広すぎます。すべての開始が1行に収まっています。これで、コンクリートデータテーブルにメッセージを送信します。メッセージは、一元配置プラットフォームの開始で、Yロールに強度、Xロールにコンクリートタイプを指定します。ブール引数を使用して、平均のダイヤモンドをオンにするように要求します。分析レイヤーのオブジェクト参照をowに格納します。行を実行すると、出力ウィンドウとプラットフォーム名が表示されます。マウスオーバーすると、これがowに保存されます。緑色の平均ダイヤモンドは、「一元配置分析」の横にある赤い三角形をクリックすると、「表示オプション」の「平均ダイヤモンド」の下にあります。分散分析を行っていなければ、デフォルトでは表示されませんが、私のスクリプトを使えば表示できます。さて、このスクリプトウィンドウをそれほど広くする必要はありません。では、別の例をいくつか見ていきましょう。赤い三角形のメニューには、アルファレベルを設定するオプションがあります。3つの標準値があります。そして、オプションで選択できる「その他」があります。この例では、owに「アルファレベルを設定」というメッセージを送信しています。そして、これを「アルファレベル」に設定します。緑色の平均ダイヤモンドの高さに注目してください。これは平均の信頼区間、つまり平均のマイナスアルファ信頼区間です。デフォルトのアルファは です。アルファレベルを に設定すると、信頼区間になります。つまり、グラフは高くなります。 行 を実行します。すると、平均のダイヤモンドの高さが変化するのを確認できます。One-Way Platform で要求できるもう1つのレポートは、赤い三角形をクリックすると表示される Quantiles レポートです。これを 行 でオンにします。このメニューのサブメニューを持たないコマンドは、括弧で囲んだブール引数を取ることができます。また、行 で示されているように、平均値と同義の ANOVA の場合、引数を一切取る必要がありません。一方、サブメニューを持つメニュー項目は、サブメニュー項目を引数として受け取ります。ブール引数は必須ではありませんが、なぜブール引数を使う必要があるのかについては後ほど説明します。今は、行 を実行します。これで、Quantiles レポートの表と、プロット上にボックスプロットが表示されます。さて、ANOVAと平均値は同義語です。これは赤い三角のメニューから出てくるコマンドの一つです。しかし、ここでもブール引数に括弧を付けていません。では、lineを実行するとどうなるでしょうか? 実行します。そして、分散分析が実行されます。ここでも、ログにはプラットフォーム名が表示されています。これは、操作するたびに表示されます。では、lineをもう一度実行するとどうなるでしょうか?ログには、既に有効になっているオプションに対して、空のブール引数が有効になっているというメッセージが表示されます。このオプションは有効なままです。また、以前のバージョンのJMPでは、ブール引数を指定せずにこの行を何度も実行することで、オプションを切り替えていたことが示されています。そのため、以前のバージョンで書かれたスクリプトを確認すると、この記述が見られるかもしれません。ただし、スクリプト内でこのオプションをオフにするのではなくオンにしていることが明確にわかるように、常にブール引数を使用することをお勧めします。そして、これを削除したい場合は、ブール型の引数を持つ行を実行します。実際、これを実行して Quantiles レポートをオフにしましょう。 行の を に置き換えて、その行だけを実行します。これで Quantiles オプションが削除されました。最後に、以前のデモでは、オブジェクトにメッセージをカスケード送信できることを見ました。また、オブジェクトにメッセージのリストを送信することもできます。スクリプトエディタウィンドウに新しい行を追加します。分析レイヤーのオブジェクト参照を格納する変数 ow がメッセージを受信します。これは「不等分散」というリストになります。このブール引数を使ってこれをオンにします。赤い三角のメニューを見てみましょう。「不等分散」があります。これは異分散性の検定を行います。その後にカンマを付けて、「不等分散」のブール引数の括弧を閉じます。アルファレベルをデフォルトの値に戻します。「set alpha level」と入力し、括弧で囲みます。入力が終わる前にカーソルをこのコード行から移動してしまったので、括弧を閉じる必要があります。次に、リストにカーソルを移動させて行全体を表示させ、セミコロンを入力します。これで、テンキーのEnterキーを使って、この1行だけを実行できます。ウィンドウの下部には、不等分散検定が表示されています。上部を見ると、アルファレベルが「」に戻ったことがわかります。これが信頼区間です。小さな青い線は、不等分散検定の結果です。それでは、一元プラットフォームの赤い三角のコマンドを使ったスクリプトの例をいくつか見てみましょう。このレポートウィンドウを閉じ、変更を保存せずにこのスクリプトを閉じます。ジャーナルで、「二変量スクリプト」をクリックします。ここでも、データテーブル「Concrete」を操作します。この分析レイヤーオブジェクト参照を格納する変数はbivです。そして、Yロールに強度、Xロールに湿度を指定して、データテーブルにBivariateコマンドを送信しました。そして、プラットフォーム起動時に表示される赤い三角のメニューからFit Lineコマンドを要求します。これで線を走らせます。そして、ログにプラットフォーム名が表示されます。bivにマウスオーバーすると、それが表示されます。強度と湿度をプロットし、回帰直線を当てはめました。そして、他のメッセージもいくつかあります。赤い三角のところに移動すると、Fit Lineコマンドがあります。これらのコマンドは、事後に送信できます。実際には、起動後にFit Lineコマンドを送信することもできますが、ここではFit Polynomialコマンドを使用します。サブメニューがありますね。これらの引数を使用する必要があります。そして、この行で、bivにFit Polynomialコマンド(2次多項式)を送信します。この行を実行すると、2次多項式が求められます。上にスクロールすると、2つ目の近似がグラフに重ねて表示されているのが分かります。ここに赤い三角形のメニューが2つあります。1つは線形近似用、もう1つは多項式近似用です。これらには、ウィンドウ上部にある二変量近似レベルのコマンドとは異なる独自のコマンドがあります。例えば、線形近似の信頼区間を陰影付きで近似したい場合(コマンドはConfid Shaded Fit)ですが、実際には少し特別な操作が必要です。まず線形近似と通信する必要があります。そして、そのメッセージを受け取った線形近似の結果が、二変量近似にメッセージとして送信されます。ここでのスクリプトでは、最初のものをCurveと呼びます。どちらもCurveと呼ばれています。添え字は「It」で、メッセージ「Confid Shaded fit」を受け取ります。これは括弧で囲まれています。これがbivが受け取るメッセージです。もしこれらの括弧がなければ、biv は Curve を理解しようとしますが、もちろん、サブメニューやメインメニューのどこにも Curve は見つかりません。また、Confid Shaded Fit もここにはありません。これは、レポートでは Linear Fit と表示されている Curve に関連付けられています。つまり、すべての line を実行すると、回帰直線に陰影付きの信頼帯が表示されます。同様に、これらの赤い三角のメニューのいずれか、特に Polynomial Fit の横にあるものをクリックすると、線の色を変更できます。デフォルトでは、最初のフィットは赤、2番目は緑、といった具合です。これを青に変更したいとします。繰り返しますが、これを 2 番目のカーブに送信し、括弧で囲むと、そのメッセージが Bivariate に渡されます。line を実行すると、線の色が変わったのがわかります。これも注目すべき点です。このスクリプトの記述方法を知りたい場合、プラットフォームの起動後にメッセージとして送信する必要がなく、起動時にスクリプトの一部として含めたい場合は、対話的に実行し、JMPでそのスクリプトをスクリプトウィンドウに保存して操作できます。その場合、Confid Shaded FitはFit Lineの引数になります。また、起動時の引数として多項式を当てはめます。線の色も引数になります。最後に、二変量プラットフォームについて見ていきましょう。ただし、Byロールに変数を追加することで、By変数の各レベルに個別の二変量オブジェクトが作成されます。スクリプトウィンドウを閉じ、二変量レポートも閉じます。コースジャーナルで、「グループ化二変量スクリプト」をクリックします。前のスクリプトと同様に、コンクリートデータテーブルにメッセージを送信して二変量プラットフォームを起動し、その結果を変数bivに格納します。bivのYロールには強度、Xロールには湿度を設定します。さらに、分析ロールにコンクリートの種類を追加します。では、線を走らせるとどうなるか見てみましょう。このレポートウィンドウには、実際には6つの二変量オブジェクトがあります。ログには、6つの要素を含むリストが割り当てられていることがわかります。では、このリストはどのように見えるでしょうか?スクリプトエディタウィンドウに戻り、bivにマウスポインタを置きます。6つの二変量オブジェクトのリストです。bivにメッセージを送信できます。Fit Lineを送信すると、すべてのオブジェクトが応答します。ログには、応答したすべてのオブジェクトのリストが表示されます。ウィンドウを確認すると、Ctrlキーを押しながら最初の線形近似の横にあるアウトライン展開ボタンをクリックすると、これらの線形近似がすべて折りたたまれます。 Ctrl キーを押したままにしているので、ウィンドウ内のすべてのレポートにブロードキャストされ、より簡単にスクロールできます。Consolidated Reinforced、Consolidated Standard、EZMix Reinforced、EZMix Standard などの二変量フィッティングが表示されているのがわかります。では、すべての二変量オブジェクトではなく、一部のオブジェクトだけをターゲットにしたい場合はどうすればよいでしょうか。そのためには、添え字を使用します。個々の添え字を使用して、1 つだけをターゲットにすることもできます。では、複数のオブジェクトに反応させたい 2 つの例を見てみましょう。添え字の行には、反応させたいオブジェクトのインデックス値のリストを指定します。最初と 3 番目の二変量オブジェクトに、次数の多項式である二次モデルをフィッティングさせたいので、 行目 を実行します。ここでも、Ctrl キーを使用して多項式フィッティングのアウトライン項目を折りたたみ、スクロールしやすくします。最初のオブジェクト、つまり最初の二変量オブジェクトには、多項式フィッティングが適用されます。 2番目はそうではありません。3番目はそうします。そしてもちろん、4番目、5番目、6番目はそうではありません。そして最後の例では、Index関数を、その演算子、つまり2つの二重コロンからなる中置演算子を使っています。これは最初の数値から2番目の数値までを ずつ増分してカウントします。そして、赤い三角のメニューにある「Flexible」の下にある「Fit Spline」というオプションがあります。ここには、指定できる様々な引数がすべて表示されます。つまり、かなり柔軟なスプラインを2変量に適用するということです。それで、次の行を実行します。そして、ログを見てください。この点については指摘し忘れましたが、2つのオブジェクトにメッセージを送信すると、2つのオブジェクトのリストが返されます。そして今、3つのオブジェクトにメッセージを送信すると、3つのオブジェクトのリストが返されます。これを見ると、1番目と2番目の2変量フィッティングではスプラインが得られなかったことがわかります。3番目は得られました。4番目は得られました。5番目は得られました。そして6番目は得られませんでした。つまり、Byロールを使用することで、By変数の各レベルごとに個別の分析、個別のオブジェクトを作成できます。そして、それらすべてと一括して、あるいは個別に通信することができます。これらは、よく使われるJMPプラットフォームにおける分析レイヤーの起動と操作のほんの一例です。