anova
反復測定モデルでの被験者間効果の分散分析
説明
例
平均応答の分散分析
標本データを読み込みます。
load fisheriris
列ベクトル species
は、3 種類のアヤメ (setosa、versicolor、virginica) で構成されています。double 行列 meas
は、花に関する 4 種類の測定値、がく片の長さと幅 (cm) と花弁の長さと幅 (cm) で構成されています。
データを table 配列に保存します。
t = table(species,meas(:,1),meas(:,2),meas(:,3),meas(:,4),... 'VariableNames',{'species','meas1','meas2','meas3','meas4'}); Meas = dataset([1 2 3 4]','VarNames',{'Measurements'});
反復予測モデルを当てはめます。ここで、測定が応答、種類が予測子変数となります。
rm = fitrm(t,'meas1-meas4~species','WithinDesign',Meas);
分散分析を実行します。
anova(rm)
ans=3×7 table
Within Between SumSq DF MeanSq F pValue
________ ________ ______ ___ _______ ______ ___________
Constant constant 7201.7 1 7201.7 19650 2.0735e-158
Constant species 309.61 2 154.8 422.39 1.1517e-61
Constant Error 53.875 147 0.36649
150 件の観測値と 3 つの種類があります。種類の自由度は 3 - 1 = 2、誤差の自由度は 150 - 3 = 147 です。 値が 1.1517e-61 という小さい値なので、種類によって測定値が有意に異なることがわかります。
パネル データ
標本パネル データを読み込みます。
load('panelData.mat');
データセット配列 panelData
には 6 年間の 8 つの都市に関する年間観測が含まれます。最初の変数 Growth
では、経済成長 (応答変数) が測定されます。2 番目と 3 番目の引数は、それぞれ都市と年のインジケーターです。最後の変数 Employ
は、雇用 (予測子変数) を測定します。このデータは、シミュレーションされたものです。
データを table 配列に保存し、都市をノミナル変数として定義します。
t = table(panelData.Growth,panelData.City,panelData.Year,... 'VariableNames',{'Growth','City','Year'});
データを所定の形式に変換し、反復測定の解析を実行します。
t = unstack(t,'Growth','Year','NewDataVariableNames',... {'year1','year2','year3','year4','year5','year6'});
複数年にわたる平均雇用水準を予測子変数としてテーブル t
に追加します。
t(:,8) = table(grpstats(panelData.Employ,panelData.City)); t.Properties.VariableNames{'Var8'} = 'meanEmploy';
被験者内変数を定義します。
Year = [1 2 3 4 5 6]';
反復測定モデルを当てはめます。ここで、6 年間の成長率が応答となり、平均雇用水準が予測子変数となります。
rm = fitrm(t,'year1-year6 ~ meanEmploy','WithinDesign',Year);
分散分析を実行します。
anovatbl = anova(rm,'WithinModel',Year)
anovatbl=3×7 table
Within Between SumSq DF MeanSq F pValue
_________ __________ __________ __ __________ ________ _________
Contrast1 constant 588.17 1 588.17 0.038495 0.85093
Contrast1 meanEmploy 3.7064e+05 1 3.7064e+05 24.258 0.0026428
Contrast1 Error 91675 6 15279
縦断的データ
標本データを読み込みます。
load('longitudinalData.mat');
行列 Y
には 16 人の応答データが含まれています。応答は 5 つの時間点 (time = 0、2、4、6、8) で測定された薬の血中濃度です。Y
の各行は 1 人の個人に対応し、各列は 1 つの時間点に対応します。最初の 8 人の被験者は女性で、次の 8 人の被験者は男性です。このデータは、シミュレーションされたものです。
性別情報を格納する変数を定義します。
Gender = ['F' 'F' 'F' 'F' 'F' 'F' 'F' 'F' 'M' 'M' 'M' 'M' 'M' 'M' 'M' 'M']';
データを所定の table 配列形式で保存し、反復測定の解析を実行します。
t = table(Gender,Y(:,1),Y(:,2),Y(:,3),Y(:,4),Y(:,5),... 'VariableNames',{'Gender','t0','t2','t4','t6','t8'});
被験者内変数を定義します。
Time = [0 2 4 6 8]';
反復予測モデルを当てはめます。ここで、血中濃度が応答、性別が予測子変数となります。
rm = fitrm(t,'t0-t8 ~ Gender','WithinDesign',Time);
分散分析を実行します。
anovatbl = anova(rm)
anovatbl=3×7 table
Within Between SumSq DF MeanSq F pValue
________ ________ ______ __ ______ ______ __________
Constant constant 54702 1 54702 1079.2 1.1897e-14
Constant Gender 2251.7 1 2251.7 44.425 1.0693e-05
Constant Error 709.6 14 50.685
2 つの性別と 16 個の観測値があるので、性別の自由度は (2 - 1) = 1、誤差の自由度は (16 - 2) × (2 - 1) = 14 です。 値が 1.0693e-05 という小さい値なので、性別が血圧に対して有意な影響を与えることがわかります。
直交対比を使用して分散分析を繰り返します。
anovatbl = anova(rm,'WithinModel','orthogonalcontrasts')
anovatbl=15×7 table
Within Between SumSq DF MeanSq F pValue
________ ________ __________ __ __________ __________ __________
Constant constant 54702 1 54702 1079.2 1.1897e-14
Constant Gender 2251.7 1 2251.7 44.425 1.0693e-05
Constant Error 709.6 14 50.685
Time constant 310.83 1 310.83 31.023 6.9065e-05
Time Gender 13.341 1 13.341 1.3315 0.26785
Time Error 140.27 14 10.019
Time^2 constant 565.42 1 565.42 98.901 1.0003e-07
Time^2 Gender 1.4076 1 1.4076 0.24621 0.62746
Time^2 Error 80.039 14 5.7171
Time^3 constant 2.6127 1 2.6127 1.4318 0.25134
Time^3 Gender 7.8853e-06 1 7.8853e-06 4.3214e-06 0.99837
Time^3 Error 25.546 14 1.8247
Time^4 constant 2.8404 1 2.8404 0.47924 0.50009
Time^4 Gender 2.9016 1 2.9016 0.48956 0.49559
Time^4 Error 82.977 14 5.9269
入力引数
rm
— 反復測定モデル
RepeatedMeasuresModel
オブジェクト
反復測定モデル。RepeatedMeasuresModel
オブジェクトとして返します。
このオブジェクトのプロパティとメソッドについては、RepeatedMeasuresModel
を参照してください。
WM
— 被験者内モデル
'separatemeans'
(既定値) | 'orthogonalcontrasts'
| モデル仕様を定義する文字ベクトルまたは string スカラー | nc 件の対比を指定する r 行 nc 列の行列
被験者内モデル。以下のいずれかとして指定します。
'separatemeans'
: 応答は反復測定の平均 (被験者内モデル全体での平均) です。'orthogonalcontrasts'
: 被験者内モデルが単一の数値係数 T をもつ場合に有効です。応答は平均値、中心に位置する T の勾配、または一般的に最大 T^(p – 1) までの多項式のすべての直交対比です。ここで、p は被験者内モデルの行数です。anova
はY
(反復測定モデルrm
で使用する応答) を直交対比で乗算し、その結果となる行列積を応答として使用します。anova
は、ヴァンデルモンド行列の QR 分解の Q 係数を使用して T の直交対比を計算します。被験者内要因のモデル仕様を定義する文字ベクトルまたは string スカラー。応答はそのモデルの項によって定義されます。
anova
は Y (反復測定モデルrm
で使用する応答行列) をモデルの項で乗算し、その積の列を応答として使用します。たとえば、時間係数があり、
'Time'
がモデル仕様である場合、anova
は定数項と中心化されていない時間項の 2 つの項を使用します。既定値は'1'
で、平均応答に対して実行されます。r 行 nc 列の行列 C。r 件の反復測定間における nc 件の対比を指定します。Y が反復測定モデル
rm
内で使用される反復測定の行列を表す場合、出力tbl
には Y*C の列ごとに個別の分散分析が格納されます。
anova
テーブルには、各応答の個別の一変量分散分析の結果が格納されます。
例: 'WithinModel','Time'
例: 'WithinModel','orthogonalcontrasts'
出力引数
anovatbl
— 分散分析の結果
テーブル
被験者間効果の分散分析の結果。テーブルとして返します。被験者間モデルのすべての項と、次の各列が格納されています。
列名 | 定義 |
---|---|
Within | 被験者内要因 |
Between | 被験者間要因 |
SumSq | 二乗和 |
DF | 自由度 |
MeanSq | 平均二乗誤差 |
F | F 統計量 |
pValue | F 統計量に対応する p 値 |
詳細
ヴァンデルモンド行列
ヴァンデルモンド行列は、列がベクトル a のべき乗になっている行列です。すなわち、V(i,j) = a(i)(n — j) (n は a の長さ) となります。
QR 分解
m 行 n 列の行列 A の QR 分解とは、その行列を積 A = Q*R の形に因子分解することを指します。ここで R は m 行 n 列の上三角行列、Q は m 行 m 列のユニタリ行列です。
バージョン履歴
R2014a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)