R で manova を実行する方法


MANOVA を理解するには、まず ANOVA を理解することが役立ちます。

ANOVA (分散分析) は、3 つ以上の独立したグループの平均間に統計的に有意な差があるかどうかを判断するために使用されます。

たとえば、学習テクニックがあるクラスの生徒の試験の成績に影響を与えるかどうかを知りたいとします。私たちはクラスをランダムに 3 つのグループに分けました。各グループは、試験に備えて 1 か月間、異なる学習方法を使用します。月末に、生徒全員が同じ試験を受けます。

勉強方法が試験のスコアに影響を与えるかどうかを調べるには、一元配置分散分析を実行します。これにより、3 つのグループの平均スコア間に統計的に有意な差があるかどうかがわかります。

ANOVA には応答変数があります。ただし、 MANOVA (多変量分散分析) では、複数の応答変数があります。

たとえば、教育レベル (高校、準学士号、学士号、修士号など) が年収と学生ローンの額の両方に与える影響を知りたいとします。この場合、1 つの因子 (教育レベル) と 2 つの応答変数 (年収と学生ローン) があるため、一方向の MANOVA を実行できます。

関連: ANOVA、ANCOVA、MANOVA、MANCOVA の違いを理解する

R で MANOVA を実行する方法

次の例では、組み込みのアヤメデータセットを使用して、R で一方向 MANOVA を実行する方法を示します。このデータセットには、3 つの異なる種 (「setosa」、「virginica」) のさまざまな花の測定値の長さと幅に関する情報が含まれています。 、「癜風」):

 #view first six rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

種ががく片の長さと幅に影響を与えるかどうかを知りたいとします。種を独立変数として、がく片の長さ幅を応答変数として使用すると、R のmanova()関数を使用して一方向 MANOVA を実行できます。

manova()関数は次の構文を使用します。

manova (cbind (rv1, rv2, …) ~ iv, データ)

金:

  • rv1、rv2 : 応答変数 1、応答変数 2 など。
  • iv : 独立変数
  • data : データフレームの名前

iris データセットを使用した例では、次の構文を使用して MANOVA を近似し、結果を表示できます。

 #fit the MANOVA model
model <- manova(cbind(Sepal.Length, Sepal.Width) ~ Species, data = iris)

#view the results
summary(model)
# Df Pillai approx F num Df den Df Pr(>F)    
#Species 2 0.94531 65.878 4,294 < 2.2e-16 ***
#Residuals 147                                             
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

結果から、F 統計量は 65.878 で、対応する p 値が非常に小さいことがわかります。これは、種に応じてがく片の測定値に統計的に有意な差があることを示しています。

技術的なメモ:デフォルトでは、manova() はPillai検定統計量を使用します。この検定統計量の分布は複雑であるため、解釈を容易にするために近似の F 値も提供されます。

さらに、次の構文を使用して、使用する検定統計量として「Roy」、「Hotelling-Lawley」、「Wilks」を指定することもできます: summary(model, test = ‘Wilks’)

がく片の長さ幅がによってどのような影響を受けるかを正確に調べるには、次のコードに示すようにsummary.aov()を使用して一変量分散分析を実行できます。

 summary.aov(model)


# Response Sepal.Length:
# Df Sum Sq Mean Sq F value Pr(>F)    
#Species 2 63.212 31.606 119.26 < 2.2e-16 ***
#Residuals 147 38.956 0.265                      
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Response Sepal.Width:
# Df Sum Sq Mean Sq F value Pr(>F)    
#Species 2 11.345 5.6725 49.16 < 2.2e-16 ***
#Residuals 147 16.962 0.1154                      
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

この結果から、両方の一変量分散分析の p 値が非常に低い (<2.2e-16) ことがわかり、種ががく片のと長さに統計的に有意な影響を与えていることがわかります。

グループのリソースを視覚化する

結果をよりよく理解するために、独立変数の各レベルのグループ平均を視覚化することも役立つ場合があります。

たとえば、 gplotsライブラリとLotmeans()関数を使用して、種ごとがく片の平均長を視覚化できます。

 #load gplots library
library(gplots)

#visualize mean sepal length by species
plotmeans(iris$Sepal.Length ~ iris$Species)

グラフから、がく片の平均長さは種によって大きく異なることがわかります。これは、種間でがく片の測定値に統計的に有意な差があるという MANOVA の結果と一致します。

種ごとにがく片の平均幅を視覚化することもできます。

 plotmeans(iris$Sepal.Width ~ iris$Species)

manova()関数の完全なドキュメントは、こちらを参照してください。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です