基準線を変更するにはどうすればよいですか?数字なしこんにちは以下のグラフに示すように、2 つのデータの標準平均を基準線に入れたいと考えています。
以下の JMP スクリプトでは、標準平均値 13.2 (22.2+4.2)/2 = 13.2 を任意に記述しています。
実際に使用するデータは 2 つ以上あります。 (下の画像はほんの一例です)
スクリプトを変更するにはどうすればよいですか?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
Graph Builder(
Size( 1056, 825 ),
Variables( Y( :height ), Y( :weight ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 7 ) ),
Caption Box( Y, Legend( 13 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 8 ) ),
Caption Box( Y, Legend( 14 ), Summary Statistic( "Std Dev" ) )
),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( 13.3, "Solid", "Medium Dark Red", "Std Dev mean", 2 )}
),
Dispatch(
{},
"weight",
ScaleBox,
{Add Ref Line( 13.3, "Solid", "Medium Dark Red", "Std Dev mean", 2 )}
)
)
);
Re: 基準線を変更するにはどうすればよいですか?数字なしこれは、年齢などの特定のサブグループの列統計を取得するために私が使用し、あなたが使用している方法です。

これがスクリプトです。同じ方法を使用して、必要な参照線を追加するだけです
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb = Graph Builder(
Size( 1056, 825 ),
Variables( X( :height ), Group Y( :age ) ),
Elements(
Bar( X, Legend( 17 ) ),
Caption Box( X, Legend( 15 ), Response Axis( "X" ) ),
Caption Box(
X,
Legend( 16 ),
Response Axis( "X" ),
Summary Statistic( "Std Dev" )
)
)
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Mean( if(:age == 12,:height,.) ) + 4*Col Std Dev( If(:age==12,:height,) ),
"Solid",
"Medium Dark Red",
"Std Dev mean 12",
2
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Min( if(:age == 12,:height,.) ),
"Solid",
"Medium Dark Red",
"Min 12",
2
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Max( if(:age == 12,:height,.) ),
"Solid",
"Medium Dark Red",
"Max 12",
2
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Mean( if(:age == 13,:height,.) ) + 4*Col Std Dev( If(:age==13,:height,) ),
"Solid",
"Medium Dark Red",
"Std Dev mean 13",
2
);
Re: 基準線を変更するにはどうすればよいですか?数字なし@txnelson
ご親切なお返事をありがとうございます!
最後にもう一つあります!質問。
ご迷惑をおかけして申し訳ありません..
all group(age) に参照行 Max, min (Mean + 4 * Std dev) を追加したいと思います。
問題は以下のスクリプトが機能しないことです。
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb = Graph Builder(
Size( 1056, 825 ),
Variables( X( :height ), Group Y( :age ) ),
Elements(
Bar( X, Legend( 17 ) ),
Caption Box( X, Legend( 15 ), Response Axis( "X" ) ),
Caption Box(
X,
Legend( 16 ),
Response Axis( "X" ),
Summary Statistic( "Std Dev" )
)
)
);
Report( gb )[AxisBox( 1 )] << Add Ref Line(
Col Mean( :height ) + 4*Col Std Dev( :height ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
そしてもう1つの問題は、すべてのグループ(年齢)の最大値、最小値(平均値+ 4 *標準偏差)を抽出するにはどうすればよいですか。
参照ライン Max (Mean + 4 * Std dev)、Min (Mean + 4 * Std dev) をすべて同じグループに適用したいと考えています。
Max()、Min()関数を使用できると思います...
Re: 基準線を変更するにはどうすればよいですか?数字なしあなたが指摘している問題はわかります。表示ツリーでは 4 つの別個の軸があることが示されていますが、JMP では実際にはそれらを 2 つの軸として扱っているようです。したがって、できる限り希望に近づけるには、性別の値に基づいて身長と体重のデータを 4 つの列に取り、4 つの変数を個別にプロットする必要があります。

JSLはこちら
names default to here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
dtSplit = dt << Split(
Split By( :sex ),
Split( :height, :weight ),
Remaining Columns( Drop All ),
Sort by Column Property
);
gb = dtSplit << Graph Builder(
Variables( Y( :height F ), Y( :weight F ), Y( :height M ), Y( :weight M ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 11 ) ),
Caption Box( Y, Legend( 15 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 12 ) ),
Caption Box( Y, Legend( 16 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 3 ),
Caption Box( Y, Legend( 17 ), Summary Statistic( "Std Dev" ) ),
Points( Y, Legend( 18 ) )
),
Elements(
Position( 1, 4 ),
Points( Y, Legend( 14 ) ),
Caption Box( Y, Legend( 19 ), Summary Statistic( "Std Err" ) )
),
SendToReport(
Dispatch(
{},
"weight F",
ScaleBox,
{Min( 49.5141101773061 ), Max( 150.319351489306 ), Inc( 20 ),
Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
18,
Properties( 0, {Line Color( 21 )}, Item ID( "height M", 1 ) )
), Legend Model(
14,
Properties( 0, {Line Color( 19 )}, Item ID( "weight M", 1 ) )
)}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {11, [0], 12, [1], 18, [3], 14, [2]} ),
Position( {0, 1, 3, 2} )}
)
)
);
Report( gb )[AxisBox( 2 )] << Add Ref Line(
Col Std Dev( :Height F ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( :Weight F),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 4 )] << Add Ref Line(
Col Std Dev( :Height M ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 5 )] << Add Ref Line(
Col Std Dev( :Weight M ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);Re: 基準線を変更するにはどうすればよいですか?数字なし@txnelson
お返事をありがとうございます。
以下のスクリプトでは、グループ F のすべての STD 値がグループ M の STD 値として書き込まれます。
どうすればそれらを 2 つのグループに分けることができるでしょうか?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb = Graph Builder(
Size( 1056, 825 ),
Variables( Y( :height ), Y( :weight ), Group Y( :sex ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 7 ) ),
Caption Box( Y, Legend( 13 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 8 ) ),
Caption Box( Y, Legend( 14 ), Summary Statistic( "Std Dev" ) )
)
);
Report( gb )[AxisBox( 2 )] << Add Ref Line(
Col Std Dev( If( :sex == "F", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( If( :sex == "F", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 4 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 5 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Weight, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Re: 基準線を変更するにはどうすればよいですか?数字なし前の回答でわかるように、リファレンス ラインを追加するには、リファレンス ラインを追加したい軸に << Add Ref Line メッセージを渡すだけです。
Report( gb )[AxisBox( 2 )] << Add Ref Line( Col Std Dev( :Height ), "Solid", "Medium Dark Red", "Std Dev mean", 2 );
どの軸を適切に指すかを見つけるには、グラフ ビルダーからの出力のツリー構造を調べる必要があります。これを行うには、グラフ ビルダーの見出しの横にある灰色の三角形を右クリックし、[グラフ ビルダーの見出し] を選択します。
編集==>ツリー構造を表示


次に、グラフ ウィンドウをツリー構造ウィンドウに合わせて、ツリー構造を表示したいグラフ ウィンドウ内の項目をクリックすると、JMP がツリー構造ウィンドウ内のその構造に移動します。

ここでわかるように、Sex=="F" の Height 列の軸は AxisBox(2) です。
問題の各軸をクリックすると、基準線を追加するためにどの軸ボックスをポイントするかが表示されます。質問の最後の軸、Sex=="M" の列 Weight は次のとおりです。

ここで必要なことは、JSL を展開して 4 軸すべての基準線を作成し、各基準線の追加メッセージで基準線の配置の正しい値を計算することだけです。コードの 4 つの Add Ref Line 行は次のとおりです。
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( If( :sex == "F", :Weight, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 2 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Height, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
Report( gb )[AxisBox( 3 )] << Add Ref Line(
Col Std Dev( If( :sex == "M", :Weight, . ) ),
"Solid",
"Medium Dark Red",
"Std Dev mean",
2
);
この場合、標準偏差の計算には、測定値列とともに性別列も考慮する必要があることに注意してください。
Re: 基準線を変更するにはどうすればよいですか?数字なし@txnelson迅速な返信ありがとうございます!
もう一つ質問があります。
以下の画像のようにデータが性別ごとにグループ化されている場合、どうすればよいですか?
Re: 基準線を変更するにはどうすればよいですか?数字なしここでは、各列(:Height,:Weight)の標準偏差の値に基準線を描画するスクリプトへの簡単な変更を示します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" ) ;
gb=Graph Builder(
Size( 1056, 825 ),
Variables( Y( :height ), Y( :weight ) ),
Elements(
Position( 1, 1 ),
Points( Y, Legend( 7 ) ),
Caption Box( Y, Legend( 13 ), Summary Statistic( "Std Dev" ) )
),
Elements(
Position( 1, 2 ),
Points( Y, Legend( 8 ) ),
Caption Box( Y, Legend( 14 ), Summary Statistic( "Std Dev" ) )
)
);
report(gb)[AxisBox(2)]<<ADD ref="" line=""></ADD>