ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

grpstats

グループ別に整理された要約統計

説明

statarray = grpstats(tbl,groupvar) は、groupvar で指定されたグループ化変数 (複数可) の値によって決定される tbl で指定されたデータ グループの平均値が格納されたテーブルまたはデータセット配列を返します。

  • グループ化変数が 1 つである場合、グループ化変数の各値について 1 つずつの行が statarray 内に作成されます。grpstats は、出現順 (グループ化変数が文字配列または string スカラーである場合)、数値の昇順 (グループ化変数が数値である場合) またはレベル順 (グループ化変数がカテゴリカルである場合) にグループを並べ替えます。

  • groupvar として、複数のグループ化変数名が含まれている string 配列、または文字ベクトルの cell 配列を指定した場合、または列番号のベクトルを指定した場合、認識されたグループ化変数の値の一意な組み合わせのそれぞれについて 1 つずつの行が statarray 内に作成されます。grpstats は、最初に 1 番目のグループ化変数の値、次に 2 番目のグループ化変数の値 (以後も同様) という順序でグループを並べ替えます。

  • tbl 内に (groupvar で指定されたものを除いて) 数値配列でも logical 配列でもない変数がある場合、名前と値のペアの引数 DataVars を使用して平均の計算をするには、数値変数および論理変数の名前または列番号を指定しなければなりません。

statarray = grpstats(tbl,groupvar,whichstats) は、whichstats で指定された要約統計のタイプのグループ値を返します。

statarray = grpstats(tbl,groupvar,whichstats,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。

means = grpstats(X,group) は、グループ化変数または変数 group の値によって決定される行列またはベクトル X にあるデータのグループの平均値が入った列ベクトルまたは行列を返します。means の行はグループ化変数の値に対応します。

  • グループ化変数が 1 つである場合、グループ化変数の各値について 1 つずつの行が means 内に作成されます。grpstats は、出現順 (グループ化変数が文字配列または string スカラーである場合)、数値の昇順 (グループ化変数が数値である場合) またはレベル順 (グループ化変数がカテゴリカルである場合) にグループを並べ替えます。

  • group が string 配列、またはグループ化変数の cell 配列である場合、認識されたグループ化変数の値の一意な組み合わせのそれぞれについて 1 つずつの行が means 内に作成されます。grpstats は、最初に 1 番目のグループ化変数の値、次に 2 番目のグループ化変数の値 (以後も同様) という順序でグループを並べ替えます。

  • X が行列の場合、meansX と同じ列数をもつ行列になります。means の各列は、X の対応する列に対するグループ平均を含みます。

[stats1,...,statsN] = grpstats(X,group,whichstats) は、whichstats で指定された要約統計のタイプのグループ値が入った列ベクトルまたは配列を返します。

[stats1,...,statsN] = grpstats(X,group,whichstats,'Alpha',alpha) は、信頼区間と予測区間の有意水準を指定します。

grpstats(X,group,alpha) は、グループ化変数 group の値によって決まるベクトルまたは行列 X 内のデータ グループの平均をプロットします。グループ化変数の値が横軸に沿ってプロットされます。各グループ平均の信頼区間は 100×(1 – alpha)% です。

  • X が行列である場合、grpstatsX の各列につき平均値と信頼区間をプロットします。

  • group がグループ化変数の cell 配列である場合、grpstatsX にあるデータ グループの平均値および信頼区間をプロットします。このデータは、グループ化変数の値を一意に組み合わせて決定されます。たとえば、グループ化変数が 2 つあり、その各変数が 2 つの値をもつ場合、グループ化変数の値の可能な組み合わせは 4 つです。プロットにはすべての可能な組み合わせではなく、入力グループ化変数内に存在する値の組み合わせのみが含まれます。

すべて折りたたむ

標本データを読み込みます。

load('hospital')

データセット配列 hospital は 100 個の観測値と 7 個の変数をもちます。

変数 SexAgeWeight および Smoker だけが含まれるデータセット配列を作成します。

dsa = hospital(:,{'Sex','Age','Weight','Smoker'});

SexMaleFemale のレベルをもつノミナル配列です。AgeWeight の各変数は数値の値をとり、Smoker は論理値をとります。

数値配列または logical 配列である AgeWeight および Smoker には、Sex のレベルに基づきグループ化した平均を計算します。

statarray = grpstats(dsa,'Sex')
statarray = 
              Sex       GroupCount    mean_Age    mean_Weight    mean_Smoker
    Female    Female    53            37.717      130.47         0.24528    
    Male      Male      47            38.915      180.53         0.44681    

statarray は、Sex の各レベルに対応する 2 つの行をもつデータセット配列です。GroupCount は各グループの観測数です。Sex によってグループ化された AgeWeight および Smoker の平均が、mean_Agemean_Weightmean_Smoker に与えられます。

Smoker の値でグループ化された、AgeWeight の平均を計算します。

statarray = grpstats(dsa,'Smoker','mean','DataVars',{'Age','Weight'})
statarray = 
         Smoker    GroupCount    mean_Age    mean_Weight
    0    false     66             37.97      149.91     
    1    true      34            38.882      161.94     

この場合、dsa 内の変数 (グループ化変数 Smoker を除いて) には数値配列でも logical 配列でもない変数があります。変数 Sex はノミナル配列です。入力データセット配列に数値配列または logical 配列でない変数が含まれている場合、DataVars を使用して要約統計の計算対象とする変数を指定しなければなりません。

SexSmoker の値の組み合わせによってグループ化された、体重の最小値と最大値を計算します。

statarray = grpstats(dsa,{'Sex','Smoker'},{'min','max'},...
                     'DataVars','Weight')
statarray = 
                Sex       Smoker    GroupCount    min_Weight    max_Weight
    Female_0    Female    false     40            111           147       
    Female_1    Female    true      13            115           146       
    Male_0      Male      false     26            158           194       
    Male_1      Male      true      21            164           202       

Smoker には 2 つの一意な値が、Sex には 2 つのレベルがあるので、可能な値の組み合わせは全部で次の 4 種類になります。Female Nonsmoker (Female_0)、Female Smoker (Female_1)、Male Nonsmoker (Male_0)、Male Smoker (Male_1)。

出力で列に名前を指定します。

statarray = grpstats(dsa,{'Sex','Smoker'},{'min','max'},...
          'DataVars','Weight','VarNames',{'Gender','Smoker',...
					'GroupCount','LowestWeight','HighestWeight'})
statarray = 
                Gender    Smoker    GroupCount    LowestWeight    HighestWeight
    Female_0    Female    false     40            111             147          
    Female_1    Female    true      13            115             146          
    Male_0      Male      false     26            158             194          
    Male_1      Male      true      21            164             202          

標本データを読み込みます。

load('hospital')

データセット配列 hospital は 100 個の観測値と 7 個の変数をもちます。

変数 AgeWeight および Smoker だけが含まれるデータセット配列を作成します。

dsa = hospital(:,{'Age','Weight','Smoker'});

AgeWeight の各変数は数値の値をとり、Smoker は論理値をとります。

数値配列または logical 配列である AgeWeight および Smoker には、グループ化を行わずに平均、最小値および最大値を計算します。

statarray = grpstats(dsa,[],{'mean','min','max'})
statarray = 
           GroupCount    mean_Age    min_Age    max_Age    mean_Weight
    All    100           38.28       25         50         154        


           min_Weight    max_Weight    mean_Smoker    min_Smoker    max_Smoker
    All    111           202           0.34           false         true      

観測名の All は、要約統計の計算に dsa 内に存在する観測がすべて使用されたことを示します。

標本データを読み込みます。

load('carsmall')

100 台の自動車についてすべての変数が測定されます。Origin は各自動車の生産国 (フランス、ドイツ、イタリア、日本、スウェーデン、米国) です。Cylinders には、各自動車の気筒の数を示す 468 の 3 つの一意の値があります。

生産国ごとにグループ化された平均加速度を計算します。

means = grpstats(Acceleration,Origin)
means = 6×1

   14.4377
   18.0500
   15.8867
   16.3778
   16.6000
   15.5000

means は 6 行 1 列の平均加速度のベクトルで、各値が生産国に対応します。

生産国と気筒の数でグループ化された平均加速度を計算します。

means = grpstats(Acceleration,{Origin,Cylinders})
means = 10×1

   17.0818
   16.5267
   11.6406
   18.0500
   15.9143
   15.5000
   16.3375
   16.7000
   16.6000
   15.5000

ここでは Origin には 6 つの一意の値が、Cylinders には 3 つの一意の値があるため、18 種類のグループ化変数値の組み合わせが可能です。この可能な組み合わせの中でデータに含まれるのは 10 個だけなので、means は実際に観測された値の組み合わせに対応して、10 行 1 列のベクトルとなります。

各グループのグループ名と平均加速度を返します。

[means,grps] = grpstats(Acceleration,{Origin,Cylinders},{'mean','gname'})
means = 10×1

   17.0818
   16.5267
   11.6406
   18.0500
   15.9143
   15.5000
   16.3375
   16.7000
   16.6000
   15.5000

grps = 10x2 cell array
    {'USA'    }    {'4'}
    {'USA'    }    {'6'}
    {'USA'    }    {'8'}
    {'France' }    {'4'}
    {'Japan'  }    {'4'}
    {'Japan'  }    {'6'}
    {'Germany'}    {'4'}
    {'Germany'}    {'6'}
    {'Sweden' }    {'4'}
    {'Italy'  }    {'4'}

出力 grps には、グループ化変数の値が観測された 10 個の組み合わせが含まれています。たとえば、フランスで生産された 4 気筒車の平均加速度は 18.05 です。

標本データを読み込みます。

load carsmall

100 台の自動車について変数 Acceleration が測定されました。変数 Origin は各自動車の生産国 (フランス、ドイツ、イタリア、日本、スウェーデン、米国) です。

生産国ごとにグループ化された最小と最大の加速度を返します。

[grpMin,grpMax,grp] = grpstats(Acceleration,Origin,{'min','max','gname'})
grpMin = 6×1

    8.0000
   15.3000
   13.9000
   12.2000
   15.7000
   15.5000

grpMax = 6×1

   22.2000
   21.9000
   18.2000
   24.6000
   17.5000
   15.5000

grp = 6x1 cell array
    {'USA'    }
    {'France' }
    {'Japan'  }
    {'Germany'}
    {'Sweden' }
    {'Italy'  }

標本のうち加速度が一番低い自動車は米国製、一番高い自動車はドイツ製です。

標本データを読み込みます。

load('carsmall')

100 台の自動車について変数 Weight が測定されました。変数 Model_Year は 1970、1976 および 1982 のモデル年式を表す 707682 の 3 つの一意の値をもちます。

各モデル年式の平均重量と 90% の予測区間を計算します。

[means,pred,grp] = grpstats(Weight,Model_Year,...
                      {'mean','predci','gname'},'Alpha',0.1);

モデル年式によりグループ化された、平均重量と 90% の予測区間を示す誤差範囲をプロットします。横軸にグループ名のラベルを付けます。

ngrps = length(grp); % Number of groups
errorbar((1:ngrps)',means,pred(:,2)-means)
xlim([0.5 3.5])
set(gca,'xtick',1:ngrps,'xticklabel',grp)
title('90% Prediction Intervals for Weight by Year')

標本データを読み込みます。

load('carsmall')

100 台の自動車につき加速度と重量を示す AccelerationWeight の各変数値が測定されます。変数 Cylinders は各自動車に搭載された気筒の数です。変数 Model_Year は 1970、1976 および 1982 のモデル年式を表す 707682 の 3 つの一意の値をもちます。

Cylinders によりグループ化された、信頼区間 95% の平均加速度をプロットします。

grpstats(Acceleration,Cylinders,0.05)

ans = 3×1

   16.6706
   16.4765
   11.6406

8 気筒が搭載された車の平均加速度は、4 気筒車や 6 気筒車よりも大幅に低いことがわかります。

Cylinders によりグループ化された、信頼区間 95% の平均加速度と重量をプロットします。WeightAcceleration の平均値が同じ桁で扱えるよう、Weight の値を 1000 で除算します。

grpstats([Acceleration,Weight/1000],Cylinders,0.05)

ans = 3×2

   16.6706    2.3726
   16.4765    3.1255
   11.6406    3.9703

気筒の数が増えるにつれて自動車の平均重量は多くなり、平均加速度は低下します。

CylindersModel_Year でグループ化された、平均加速度をプロットします。信頼区間は 95% に指定します。

grpstats(Acceleration,{Cylinders,Model_Year},0.05)

ans = 8×1

   16.1875
   16.8667
   16.7036
   15.5000
   17.0000
   16.0333
   11.0217
   13.2222

ここでは Cylinders には 3 つの一意の値が、Model_Year には 3 つの一意の値があるため、9 種類のグループ化変数値の組み合わせが可能です。プロットには 8 気筒を搭載した車の 1982 年モデルが表示されません。これはデータにそのような組み合わせが含まれていないためです。

1976 年モデルの 8 気筒車の平均加速度は、1970 年モデルの 8 気筒車よりも大幅に高いことがわかります。

入力引数

すべて折りたたむ

入力データ。テーブルまたはデータセット配列として指定します。tbl には、グループ化変数を少なくとも 1 つ含めなければなりません。

要約統計は、データ型が数値型または論理型である変数についてのみ計算できます。tbl 内に (グループ化変数を除いて) 数値配列でも logical 配列でもない変数が存在する場合、名前と値のペアの引数 DataVars を使用して要約統計の計算対象となる数値変数および論理変数の名前または列番号を指定しなければなりません。

入力データ (tbl) のグループ化変数の識別子。次のいずれかとして指定します。

文字ベクトル、string 配列、または文字ベクトルの cell 配列グループ化変数の名前
正の整数または正の整数のベクトルグループ化変数の変数番号
要素の数が tbl の変数の数と等しい数の要素をもつ論理値のベクトルグループ化変数の場合は true、それ以外の場合は false の値をもつ論理インジケーター
[]グループなし (すべてのデータの要約統計を返します)

groupvar でグループ化変数として識別される変数のデータ型は、グループ化変数のデータ型として有効である categorical 配列、logical ベクトル、数値ベクトル、datetime ベクトル、duration ベクトル、string 配列、または文字ベクトルの cell 配列でなければなりません。

たとえば、6 つの変数をもつ入力テーブル tbl があるとします。4 つ目の変数の名前は Gender です。有効なグループ化変数にするには、Male および Female という一意な値をもつ string 配列、文字ベクトルの cell 配列、またはノミナル配列を Gender のデータ型として使用します。変数 Gender をグループ化変数として指定するには、以下の構文のいずれかを使用できます。

  • statarray = grpstats(tbl,'Gender')

  • statarray = grpstats(tbl,4)

  • statarray = grpstats(tbl,logical([0 0 0 1 0 0]))

データ型: double | logical | char | string | cell

計算する要約統計のタイプ。文字ベクトル、string スカラー、関数ハンドル、string 配列、または文字ベクトルおよび関数ハンドルの cell 配列を指定します。複数の要約統計タイプを指定するには cell 配列を使用します。

値には以下が含まれます。

'mean'平均
'sem'平均の標準誤差
'numel'NaN 以外の要素のカウントまたは数
'gname'グループ名
'std'標準偏差
'var'分散
'min'最小
'max'最大
'range'範囲
'meanci'平均値の 95% の信頼区間
'predci'新しい観測の 95% の予測区間

例: [stat1,stat2] = grpstats(X,group,{'mean','sem'})

名前と値のペアの引数 Alpha を使用して、'meanci' オプションと 'predci' オプションにそれぞれ異なる有意水準を指定できます。

他のタイプの要約統計を指定するには関数ハンドルを使用します。データの列または行列を受け入れるように、任意の関数へのハンドルを使用すると、一部のグループの出力が空白であっても、grpstats による呼び出しで毎回同じサイズの出力が返されます。

関数がデータの列を受け入れる場合、その関数はスカラー値であるか、長さが nvals の記述統計の場合は、nvals 行 1 列のベクトルを返します (たとえば信頼区間の長さは 2 です)。関数が行列を受け入れる場合、1 行 ncols 列の行ベクトルか、nvals 行 ncols 列の行列を返さなければなりません (ここで ncols は入力データ行列の列数です)。

例: [stat1,stat2,stat3] = grpstats(X,group,{'mean','std',@skewness})

列方向の統計を計算しない関数の場合は、関数を指定する際に計算方向を指定します。

例: stat1 = grpstats(X,group,@(x)sum(x,1))

(0,1) の範囲のスカラー値として指定される有意水準。

  • whichstats'meanci' または 'predci' を指定する場合、alpha を使用して信頼区間または予測区間の有意水準を指定できます。alpha を指定すると、grpstats は 100×(1 – alpha)% の信頼区間または予測区間を返します。alpha を指定しなかった場合、grpstats は 95% の区間 (alpha = 0.05) を返します。

  • グループ平均および対応する 100×(1 – alpha)% の信頼区間をプロットするには、alpha構文で使用します。

データ型: double

ベクトルまたは行列として指定される入力データ。X が行列の場合、grpstatsX の各列の要約統計を返します。

データ型: double | single

グループ化変数。categorical 配列、logical ベクトル、数値ベクトル、datetime ベクトル、duration ベクトル、string 配列、または文字ベクトルの cell 配列を指定します。グループ化変数の一意な各値によってグループが定義されます。grpstats は、グループ化変数の値を使用して要約統計のデータをグループ化します。

入力データ X の各行につきグループ化変数の値がなければなりません。グループ化変数の値が同じ観測 (行) は同じグループに属します。グループを使用せずにすべてのデータの要約統計を計算する場合は [] を使用します。

たとえば、Gender'Male' および 'Female' という値をもつ string 配列、または文字ベクトルの cell 配列である場合、Gender をグループ化変数として使用してデータを性別に要約することができます。

また、複数のグループ化変数を使用して要約統計用にデータをグループ化することもできます。その場合、グループ化変数の cell 配列を指定します。

たとえば、Smoker は logical ベクトルであり、非喫煙者の値が 0、喫煙者の値が 1 になる場合、cell 配列 {Gender,Smoker} を指定すると、観測値は Male Smoker、Male Nonsmoker、Female Smoker および Female Nonsmoker という 4 つのグループに分割されます。grpstats は、可能なすべての組み合わせではなく、入力されたグループ化変数に含まれている値の組み合わせについてのみ要約統計を返します。

データ型: single | double | logical | char | string | cell | カテゴリカル | datetime | duration

名前と値のペアの引数

オプションの Name,Value 引数のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'DataVars',[1,3,4],'Alpha',0.01 は、データセット配列の 1、3、4 番目の変数について要約統計を 99% の信頼区間で計算するよう指定します。

信頼区間と予測区間の有意水準。'Alpha' と、(0,1) の範囲内のスカラー値で構成されるコンマ区切りのペアとして指定します。

whichstats'meanci' または 'predci' を指定する場合、Alpha を使用して信頼区間または予測区間の有意水準を指定できます。α の値を指定すると、grpstats は 100×(1 – α)% の信頼区間または予測区間を返します。

Alpha の値を指定しないと、grpstats は 95% の区間 (α = 0.05) を返します。

例: 'Alpha',0.1

データ型: double

要約統計の計算対象となる入力データ tbl 内の変数を示す変数名または列。'DataVars' と string 配列、文字ベクトルの cell 配列、正の整数のベクトル、または logical ベクトルから構成されるコンマ区切りのペアとして指定します。変数の名前を指定するには文字ベクトルまたは string スカラー、変数の列番号を指定するには正の整数、計算に含める変数を指定するには論理値 (要約統計を計算する場合は true、それ以外の場合は false) を使用します。

tbl に (groupvar で指定されているグループ化変数を除いて) 数値配列でも logical 配列でもない変数がある場合、DataVars を指定しなければなりません。要約統計は、データ型が数値型または論理型である変数についてのみ計算できます。

例: 'DataVars',{'Height','Weight'}

データ型: double | string | cell | char

出力 statarray の変数名。'VarNames' と string 配列、または文字ベクトルの cell 配列から構成されるコンマ区切りのペアとして指定します。既定の設定では、grpstats は、入力データ tbl からの変数名に接頭辞を追加して出力変数の名前を生成します。この接頭辞は要約統計の名前に対応します。

例: 'VarNames',{'Gender','GroupCount','MaleMean','FemaleMean'}

データ型: string | cell

出力引数

すべて折りたたむ

グループ要約統計。テーブルまたはデータセット配列として返します。tbl がテーブルの場合、grpstatsstatarray をテーブルとして返します。tbl がデータセット配列の場合、grpstatsstatarray をデータセット配列として返します。

statarray には、groupvar で指定されたグループ化変数のレベルによって決定される tbl のデータのグループの要約統計値が格納されています。statarray には、groupvar によって指定された変数での観測値または値の組み合わせごとに 1 つの行が存在します。出力 statarray には次のデータが格納されます。

  • groupvar で指定されるすべてのグループ化変数。

  • 各グループの観測の数を含む変数 GroupCount

  • tbl に存在する (groupvar で指定されたものを除く) すべての変数のグループ要約統計値。または、DataVars を使って指定された変数に限定されたグループ要約統計値。

statarray 内の変数の合計数は、ngroupvars + 1 + ndatavars×nstats です。ここで ngroupvars は groupvar 内の変数の数、ndatavars は要約統計の計算対象となる変数の数、nstats は whichstats で指定された要約統計タイプの数です。

grpstats は、名前と値のペアの引数 VarNames を使って変数名を指定する場合を除き、statarray 内の変数に既定の名前を割り当てます。

ベクトルまたは行列 X 内に存在するデータ グループのグループ平均。group のレベルによって決定され、ngroups 行 ncols 列の配列として返されます。ここで ngroups はグループ化変数にある一意の値の数、ncols は X の列数です。X がベクトルの場合、means は列ベクトルです。

ベクトルまたは行列 X 内に存在するデータ グループのグループ要約統計。group のレベルによって決定され、ngroups 行 ncols 列の配列として返されます。ここで ngroups はグループ化変数にある一意の値の数、ncols は X の列数です。whichstats で指定されている要約統計の各タイプについて出力引数を指定しなければなりません。

whichstats の要約統計タイプが nvals の長さをもつ値を返す場合 (たとえば信頼区間は長さが 2 の記述統計です)、これに対応する出力引数は ngroups X ncols X nvals の配列になります。

アルゴリズム

  • grpstatsNaN を欠損値として認識するため、これらの値を入力データから削除してから要約統計を計算します。

  • grpstats は、空のグループ名を無視します。

拡張機能

R2006a より前に導入