R-共分散分析
回帰分析を使用して、応答変数に対する予測変数の変動の影響を説明するモデルを作成します。はい/いいえや男性/女性などの値を持つカテゴリ変数がある場合があります。単純な回帰分析では、カテゴリ変数の値ごとに複数の結果が得られます。このようなシナリオでは、予測変数と一緒に使用し、カテゴリ変数の各レベルの回帰直線を比較することで、カテゴリ変数の効果を調べることができます。このような分析は、Analysis of Covariance とも呼ばれます ANCOVA。
例
R組み込みデータセットmtcarsについて考えてみます。その中で、フィールド「am」がトランスミッションのタイプ(自動または手動)を表していることがわかります。これは、値が0と1のカテゴリ変数です。車のガロンあたりのマイル数(mpg)は、馬力( "hp")の値以外にも依存する可能性があります。
「mpg」と「hp」の間の回帰に対する「am」の値の影響を調べます。それはを使用して行われますaov() 関数の後に anova() 重回帰を比較する関数。
入力データ
データセットmtcarsから、フィールド「mpg」、「hp」、および「am」を含むデータフレームを作成します。ここでは、「mpg」を応答変数、「hp」を予測変数、「am」をカテゴリ変数とします。
input <- mtcars[,c("am","mpg","hp")]
print(head(input))
上記のコードを実行すると、次の結果が生成されます-
am mpg hp
Mazda RX4 1 21.0 110
Mazda RX4 Wag 1 21.0 110
Datsun 710 1 22.8 93
Hornet 4 Drive 0 21.4 110
Hornet Sportabout 0 18.7 175
Valiant 0 18.1 105
ANCOVA分析
「am」と「hp」の間の相互作用を考慮して、「hp」を予測変数として、「mpg」を応答変数として使用する回帰モデルを作成します。
カテゴリ変数と予測変数の間の交互作用を持つモデル
# Get the dataset.
input <- mtcars
# Create the regression model.
result <- aov(mpg~hp*am,data = input)
print(summary(result))
上記のコードを実行すると、次の結果が生成されます-
Df Sum Sq Mean Sq F value Pr(>F)
hp 1 678.4 678.4 77.391 1.50e-09 ***
am 1 202.2 202.2 23.072 4.75e-05 ***
hp:am 1 0.0 0.0 0.001 0.981
Residuals 28 245.4 8.8
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
この結果は、両方の場合のp値が0.05未満であるため、馬力とトランスミッションタイプの両方がガロンあたりのマイル数に大きな影響を与えることを示しています。ただし、p値が0.05を超えるため、これら2つの変数間の交互作用は重要ではありません。
カテゴリ変数と予測変数の間の相互作用のないモデル
# Get the dataset.
input <- mtcars
# Create the regression model.
result <- aov(mpg~hp+am,data = input)
print(summary(result))
上記のコードを実行すると、次の結果が生成されます-
Df Sum Sq Mean Sq F value Pr(>F)
hp 1 678.4 678.4 80.15 7.63e-10 ***
am 1 202.2 202.2 23.89 3.46e-05 ***
Residuals 29 245.4 8.5
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
この結果は、両方の場合のp値が0.05未満であるため、馬力とトランスミッションタイプの両方がガロンあたりのマイル数に大きな影響を与えることを示しています。
2つのモデルの比較
これで、2つのモデルを比較して、変数の交互作用が本当に重要でないかどうかを結論付けることができます。これには、anova() 関数。
# Get the dataset.
input <- mtcars
# Create the regression models.
result1 <- aov(mpg~hp*am,data = input)
result2 <- aov(mpg~hp+am,data = input)
# Compare the two models.
print(anova(result1,result2))
上記のコードを実行すると、次の結果が生成されます-
Model 1: mpg ~ hp * am
Model 2: mpg ~ hp + am
Res.Df RSS Df Sum of Sq F Pr(>F)
1 28 245.43
2 29 245.44 -1 -0.0052515 6e-04 0.9806
p値が0.05より大きいため、馬力と伝達タイプの間の相互作用は重要ではないと結論付けます。したがって、ガロンあたりの走行距離は、自動変速機モードと手動変速機モードの両方で、同様に車の馬力に依存します。