ドキュメンテーション

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

grpstats

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

構文

  • statarray = grpstats(tbl,groupvar)
  • statarray = grpstats(tbl,groupvar,whichstats)
  • statarray = grpstats(tbl,groupvar,whichstats,Name,Value)
  • means = grpstats(X,group)
  • [stats1,...,statsN] = grpstats(X,group,whichstats)
  • [stats1,...,statsN] = grpstats(X,group,whichstats,'Alpha',alpha)
  • grpstats(X,group,alpha)

説明

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

  • グループ化変数が 1 つの場合、statarray 内にはグループ化変数の各値につき 1 つの行が設定されます。grpstats は、出現順 (グループ化変数が文字配列の場合)、数値の昇順 (グループ化変数が数値の場合) またはレベル順 (グループ化変数がカテゴリカルの場合) にグループを並べ替えます。

  • groupvar が、複数のグループ化変数の名前を含む文字列のセル配列か、列番号のベクトルである場合、statarray には観測されたグループ化変数の値の一意の組み合わせごとに 1 つの行が設定されます。grpstats は、まずは最初のグループ化変数の値、次に 2 番目のグループ化変数の値のような順番でグループを並べ替えます。

  • tbl 内に (groupvar で指定されたものを除いて) 数値配列でも論理配列でもない変数がある場合、名前と値のペアの引数 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 つの場合、means 内にはグループ化変数の各値につき 1 つの行が設定されます。grpstats は、出現順 (グループ化変数が文字配列の場合)、数値の昇順 (グループ化変数が数値の場合) またはレベル順 (グループ化変数がカテゴリカルの場合) にグループを並べ替えます。

  • group がグループ化変数のセル配列である場合、means には観測されたグループ化変数の値の一意の各組み合わせにつき 1 つの行が設定されます。grpstats は、最初のグループ化変数の値、次に 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 がグループ化変数のセル配列である場合、grpstatsX にあるデータ グループの平均値および信頼区間をプロットします。このデータは、グループ化変数の値を一意に組み合わせて決定されます。たとえば、グループ化変数が 2 つあり、その各変数が 2 つの値をもつ場合、グループ化変数の値の可能な組み合わせは 4 つです。プロットにはすべての可能な組み合わせではなく、入力グループ化変数内に存在する値の組み合わせのみが含まれます。

すべて展開する

グループ別に整理されたデータセット配列の要約統計

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

load('hospital')

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

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

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

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

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

statarray = grpstats(ds,'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(ds,'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     

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

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

statarray = grpstats(ds,{'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_0)、女性喫煙者 (Female_1)、男性非喫煙者 (Male_0)、男性喫煙者 (Male_1)。

グループ化を使用しないデータセット配列の要約統計

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

load('hospital')

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

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

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

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

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

statarray = grpstats(ds,[],{'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 は、要約統計の計算に ds 内に存在する観測がすべて使用されたことを示します。

1 つまたは複数のグループ化変数を使用した行列のグループ平均

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

load('carsmall')

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

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

means = grpstats(Acceleration,Origin)
means =

   18.0500
   16.3778
   15.5000
   15.8867
   16.6000
   14.4377

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

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

means = grpstats(Acceleration,{Origin,Cylinders})
means =

   18.0500
   16.3375
   16.7000
   15.5000
   15.9143
   15.5000
   16.6000
   17.0818
   16.5267
   11.6406

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

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

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

   17.0818
   16.5267
   11.6406
   18.0500
   15.9143
   15.5000
   16.3375
   16.7000
   16.6000
   15.5000


grps = 

    '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,grpMed,grpMax,grp] = grpstats(Acceleration,Origin,...
                               {'min','median','max','gname'})
grpMin =

    8.0000
   15.3000
   13.9000
   12.2000
   15.7000
   15.5000


grpMed =

   14.7000
   17.5000
   15.7000
   15.3000
   16.6000
   15.5000


grpMax =

   22.2000
   21.9000
   18.2000
   24.6000
   17.5000
   15.5000


grp = 

    '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

figure()
errorbar((1:ngrps)',means,pred(:,2)-means)
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)

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

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

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

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

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

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

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

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

入力引数

すべて展開する

tbl — 入力データテーブル | データセット配列

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

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

groupvar — グループ化変数の識別子文字列のセル配列 | 正の整数のベクトル | 論理ベクトル | []

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

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

groupvar によってグループ化変数として識別されるすべての変数は、有効なグループ化変数のデータ型をもたなければなりません。それらは、カテゴリカル配列、論理ベクトルまたは数値ベクトル、文字列のセル配列です。

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

  • statarray = grpstats(tbl,'Gender')

  • statarray = grpstats(tbl,4)

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

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

whichstats — 要約統計のタイプ文字列 | 関数ハンドル

計算する要約統計のタイプ。文字列または関数ハンドル、あるいは文字列と関数ハンドルのセル配列として指定します。複数の要約統計タイプを指定するにはセル配列を使用します。

使用できる文字列値は以下のとおりです。

'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})

データ型: char | function_handle

alpha — 有意水準(0,1) の範囲のスカラー値

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

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

  • グループ平均とそれに対応する 100×(1 – alpha)% の信頼区間をプロットするには、alphagrpstats(X,group,alpha) 構文で使用します。

データ型: double

X — 入力データベクトル | 行列

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

データ型: double | single

group — グループ化変数カテゴリカル配列 | 論理ベクトルまたは数値ベクトル | 文字列のセル配列 | []

グループ化変数。カテゴリカル配列、論理ベクトルまたは数値ベクトル、文字列のセル配列のいずれかとして指定します。グループ化変数の一意な各値によってグループが定義されます。grpstats は、グループ化変数の値を使用して要約統計のデータをグループ化します。

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

たとえば Gender'Male''Female' の値をもつ文字列のセル配列である場合、Gender をグループ化変数として使用してデータを性別に要約することができます。

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

たとえば、Smoker が、非喫煙者に対して 0 および喫煙者に対して 1 の値をもつ論理ベクトルである場合、セル配列 {Gender,Smoker} を指定すると、観測値が次の 4 つのグループに分割されます。男性喫煙者、男性非喫煙者、女性喫煙者および女性非喫煙者。grpstats は、可能な組み合わせすべてではなく、入力グループ化変数内に存在する値の組み合わせに限定した要約統計を返します。

名前/値のペアの引数

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

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

'Alpha' — 有意水準0.05 (既定値) | (0,1) の範囲のスカラー値

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

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

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

例: 'Alpha',0.1

データ型: double

'DataVars' — 変数名または列文字列のセル配列 | 正の整数のベクトル | 論理ベクトル

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

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

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

データ型: double | cell | char

'VarNames' — 出力の変数名文字列のセル配列

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

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

データ型: cell

出力引数

すべて展開する

statarray — グループ要約統計テーブル | データセット配列

グループ要約統計。テーブルまたはデータセット配列として返します。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 内の変数に既定の名前を割り当てます。

means — グループ平均列ベクトル | 配列

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

stats1,...,statsN — グループ要約統計列ベクトル | 配列

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

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

詳細

すべて展開する

アルゴリズム

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

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

参考

|

この情報は役に立ちましたか?