スクリプトガイド > データテーブル > データテーブルの高度なスクリプト > 要約統計量をグローバル変数に格納する
公開日: 11/25/2021

要約統計量をグローバル変数に格納する

Summarizeコマンドは、データテーブルの要約統計量を求め、グローバル変数に格納します。Summarizeコマンドは、要約統計量を求めて新しいデータテーブルに表示するSummaryコマンドとは異なります。

1つ目の引数は、オプションのデータテーブル参照です。複数のデータテーブルが開いている可能性がある場合に含めます。

dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Animals.jmp" );
Summarize( dt1,
	exg = By( :sex ),
	exm = Mean( :"身長(インチ)"n )
);
Show( exg );
Show( exm );

名前付き引数は、CountSumMeanMinMaxStdDevFirstCorrQuantileで、これらの統計量は数値列に対してのみ計算できます。このそれぞれがデータ列を引数にとります。

メモ:

name=By(groupvar)ステートメントが含まれている場合は、サブグループの統計量がnameという名前のリストに割り当てられます。

Countの場合、列引数は必須ではありませんが、列を指定して非欠測値の数をカウントすると役に立つことがよくあります。

Quantileは、どの分位点かを指定する第2引数もとります(たとえば、10パーセント点なら0.1)。

行の属性を含むデータを要約しようとすると、要約統計量は計算されず、エラーがログに表示されます。

メモ: 除外された行は、Summarizeの計算から除外されます。すべてのデータが除外された場合、Summarizeは欠測値のリストを戻します。すべてのデータが削除された(行がない)場合、Summarizeは空のリストを戻します。

次の例は、「Big Class.jmp」サンプルデータテーブルを使用します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize(
	a = By( :年齢 ),
	c = Count,
	sumHt = Sum( :"身長(インチ)"n ),
	meanHt = Mean( :"身長(インチ)"n ),
	minHt = Min( :"身長(インチ)"n ),
	maxHt = Max( :"身長(インチ)"n ),
	sdHt = Std Dev( :"身長(インチ)"n ),
	q10Ht = Quantile( :"身長(インチ)"n, .10 )
);
Show( a, c, sumHt, meanHt, minHt, maxHt, sdHt, q10Ht );

スクリプトにByグループが含まれているので、結果は1つのリストと6つの行列になります。

a = {"12", "13", "14", "15", "16", "17"}

c = [8, 7, 12, 7, 3, 3]

sumHt = [465, 422, 770, 452, 193, 200]

meanHt = [58.125, 60.28571428571428, 64.16666666666667, 64.57142857142857, 64.33333333333333, 66.66666666666667]

minHt = [51, 56, 61, 62, 60, 62]

maxHt = [66, 65, 69, 67, 68, 70]

sdHt = [5.083235752381126, 3.039423504234876, 2.367712103711172, 1.988059594776032, 4.041451884327343, 4.163331998932229]

q10Ht = [51, 56, 61.3, 62, 60, 62]

Table Boxを使って結果をフォーマットすることもできます。

New Window( "要約の結果",
	Table Box(
		String Col Box( "年齢", a ),
		Number Col Box( "N", c ),
		Number Col Box( "合計", sumHt ),
		Number Col Box( "平均", meanHt ),
		Number Col Box( "最小値", minHt ),
		Number Col Box( "最大値", maxHt ),
		Number Col Box( "標準偏差", sdHt ),
		Number Col Box( "10パーセント点", q10Ht )
	)
);

図9.7 要約の結果 

Results from Summarize

次のように、ウィンドウに全体の統計量を含めることもできます。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
 
Summarize(
	a = By( :年齢 ),
	c = Count,
	sumHt = Sum( :"身長(インチ)"n ),
	meanHt = Mean( :"身長(インチ)"n ),
	minHt = Min( :"身長(インチ)"n ),
	maxHt = Max( :"身長(インチ)"n ),
	sdHt = Std Dev( :"身長(インチ)"n ),
	q10Ht = Quantile( :"身長(インチ)"n, .10 )
);
 
Summarize(
	tc = Count,
	tsumHt = Sum( :"身長(インチ)"n ),
	tmeanHt = Mean( :"身長(インチ)"n ),
	tminHt = Min( :"身長(インチ)"n ),
	tmaxHt = Max( :"身長(インチ)"n ),
	tsdHt = Std Dev( :"身長(インチ)"n ),
	tq10Ht = Quantile( :"身長(インチ)"n, .10 )
);
 
Insert Into( a, "全体" );
c = c |/ tc;
sumHt = sumHt |/ tsumHt;
meanHt = meanHt |/ tmeanHt;
minHt = minHt |/ tminHt;
maxHt = maxHt |/ tmaxHt;
sdHt = sdHt |/ tsdHt;
q10Ht = q10Ht |/ tq10Ht;
 
New Window( "要約の結果",
	Table Box(
		String Col Box( "年齢", a ),
		Number Col Box( "N", c ),
		Number Col Box( "合計", sumHt ),
		Number Col Box( "平均", meanHt ),
		Number Col Box( "最小値", minHt ),
		Number Col Box( "最大値", maxHt ),
		Number Col Box( "標準偏差", sdHt ),
		Number Col Box( "10パーセント点", q10Ht )
	)
);

図9.8 要約と全体の統計量 

Summarize with Total

Byグループを指定しない場合、各統計量の結果は、次のように単一の値になります。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize(

// a = By( :年齢 ),

	c = Count,
	sumHt = Sum( :"身長(インチ)"n ),
	meanHt = Mean( :"身長(インチ)"n ),
	minHt = Min( :"身長(インチ)"n ),
	maxHt = Max( :"身長(インチ)"n ),
	sdHt = Std Dev( :"身長(インチ)"n ),
	q10Ht = Quantile( :"身長(インチ)"n, .10 )
);
Show( c, sumHt, meanHt, minHt, maxHt, sdHt, q10Ht );

c = 40;

sumHt = 2502;

meanHt = 62.55;

minHt = 51;

maxHt = 70;

sdHt = 4.24233849397192;

q10Ht = 56.2;

Summarizeでは、複数のByグループを使用できます。たとえば、「Big Class.jmp」では、次のように指定できます。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Summarize( g = By( :年齢, :性別 ), c = Count() );
Show( g, c );

g = {"12", "12", "13", "13", "14", "14", "15", "15", "16", "16", "17", "17"}, {"F", "M", "F", "M", "F", "M", "F", "M", "F", "M", "F", "M"}}

c = [5,3,3,4,5,7,2,5,2,1,1,2]

Byグループを指定すると、結果は常に行列になります。指定しない場合、結果はスカラーになります。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).