<<目次へ


最終更新日 : 2007.8.15

2つ以上の説明変数を使う

p54 「BOX 4.1 身長は数学的能力を説明できるか」

> dat <- excel.w(3)
Read 96 items
> AMA <- c(dat[,1])
> YEARS <- c(dat[,2])
> HGT <- c(dat[,3])
> box4.1 <- glm(AMA ~ HGT)
> summary(aov(box4.1))
            Df Sum Sq Mean Sq F value    Pr(>F)    
HGT          1 412.77  412.77  726.87 < 2.2e-16 ***
Residuals   30  17.04    0.57                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


p54 「BOX 4.2 身長の代わりに年齢で数学的能力を説明する」

> box4.2 <- glm(AMA ~ YEARS + HGT)
> summary(aov(box4.2))
            Df Sum Sq Mean Sq   F value Pr(>F)    
YEARS        1 422.60  422.60 1702.4271 <2e-16 ***
HGT          1   0.01    0.01    0.0317 0.8599    
Residuals   29   7.20    0.25                     
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


p56 「BOX 4.3(a) 散水頻度のみでは最終樹高に違いは見られない」

> dat <- excel.w(3)
Read 120 items
> WATER <- as.factor(dat[,1])
> FINALHT <- c(dat[,2])
> INITHT <- c(dat[,3])
> box4.3a <- glm(FINALHT ~ WATER)
> summary(aov(box4.3a))
            Df Sum Sq Mean Sq F value Pr(>F)
WATER        3 12.895   4.298  1.9721 0.1356
Residuals   36 78.461   2.179


p56 「BOX 4.3(b) 初期樹高を考慮に入れると散水頻度は最終樹高への有意な影響をもつ」

> box4.3b <- glm(FINALHT ~ WATER + INITHT)
> summary(aov(box4.3b))
            Df Sum Sq Mean Sq  F value    Pr(>F)    
WATER        3 12.895   4.298   793.55 < 2.2e-16 ***
INITHT       1 78.272  78.272 14450.93 < 2.2e-16 ***
Residuals   35  0.190   0.005                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


【補足】 p55の図4.1をRで描いてみる

> plot(dat[,1], dat[,2], xaxt="n", ylim=c(0,10), pch=18, 
+ xlab="散水処理", ylab="最終樹高", main="4水準の散水処理における苗木の最終樹高")
> x <- 1:4
> M <- apply(matrix(FINALHT, ncol=4, nrow=10), 2, mean)
> points(x, M, pch=8, col="red")
> axis(1, at=1:4)


p59 「BOX 4.4(a) 右足の長さで体重を予測する」

> dat <- excel.w(3)
Read 300 items
> LLEG <- c(dat[,1])
> RLEG <- c(dat[,2])
> WGHT <- c(dat[,3])
> box4.4a <- glm(WGHT ~ RLEG)
> summary(aov(box4.4a))
            Df Sum Sq Mean Sq F value    Pr(>F)    
RLEG         1 3627.7  3627.7  125.75 < 2.2e-16 ***
Residuals   98 2827.1    28.8                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


p59 「RLEGとLLEGのどちらも体重を有意に予測できない」

> box4.4b <- glm(WGHT ~ RLEG + LLEG)
> summary(aov(box4.4b))
            Df Sum Sq Mean Sq  F value Pr(>F)    
RLEG         1 3627.7  3627.7 127.4416 <2e-16 ***
LLEG         1   66.0    66.0   2.3173 0.1312    
Residuals   97 2761.1    28.5                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

 今までの内容でもこれらの2つの値は出てきていたのだが、この章で詳しく解説されているので、ここでタイプTの平方和とタイプVの平方和についての補足をしておこう。Rのanova()はタイプTの平方和を返すが、タイプUおよびタイプVの平方和を出す場合は新たにcarパッケージをダウンロードしてインストールする必要がある。

#CRANからcarパッケージをダウンロード・インストール
> install.packages("car")

#carパッケージの呼び出し
> library(car)

#carパッケージに含まれるAnova()で解析
> Anova(box4.4b, test="F") #引数type=""を省略した場合はタイプUの平方和
Anova Table (Type II tests)

Response: WGHT
               SS Df      F  Pr(>F)  
RLEG        83.33  1 2.9275 0.09028 .
LLEG        65.96  1 2.3173 0.13120  
Residuals 2761.14 97                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

#タイプVの平方和を出すためには引数をtype="III"と指定する
> Anova(box4.4b, test="F", type="III")
Anova Table (Type III tests)

Response: WGHT
               SS Df      F  Pr(>F)  
RLEG        83.33  1 2.9275 0.09028 .
LLEG        65.96  1 2.3173 0.13120  
Residuals 2761.14 97                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

 通常はTypeTの平方和を用いれば問題ないが、どういうときにTypeUの平方和やTypeVの平方和を用いればよいのか?これについてはhttp://phi.med.gunma-u.ac.jp/swtips/Rnewsarchives.htmlのページ(下の方)にある「Type IIとType IIIの平方和について」の部分を読んでください。