My Notes

統計学とかR(R言語)とかPython3の覚え書きとか走り書きとか。 座右の銘にしたい: All work and no play makes Jack a dull boy.

分散分析 一元配置分散分析(対応なし)をR(R言語)で。 oneway.test(), aov(), anova()

Rコード

#
# 分散分析 一元配置分散分析(対応なし)
#




#
# 参考にするデータや帰無仮説の立て方は、
#『パソコンで簡単! すぐできる生物統計 統計学の考え方から統計ソフトSPSSの使い方まで』
# 第4章 p.69~70
#




#
# 帰無仮説
# "グループが同じ平均を持っている"
# この例では、"2つのグループの魚が同じ平均体重を持っている"
#




# 2つのグループの魚の体重
グループ1の体重_vec <- c(6, 7, 8)
グループ2の体重_vec <- c(10, 11, 12)
魚の体重_vec <- c(グループ1の体重_vec, グループ2の体重_vec) # 2つのベクトルを1つにまとめる

標本_vec <- c(rep("グループ1", 3), rep("グループ2", 3))
標本_fac <- factor(標本_vec) # factor型に変換

df <- data.frame(魚の体重 = 魚の体重_vec, 標本 = 標本_fac)
df




summary(df)




# 分散分析 3つの関数
#
# oneway.test()
# すべての群の母分散が等しいと仮定できるとき
oneway.test(df$魚の体重 ~ df$標本, var.equal = TRUE)

# すべての群の母分散が等しいと仮定できないとき
oneway.test(df$魚の体重 ~ df$標本, var.equal = FALSE)


# aov()
aov(df$魚の体重 ~ df$標本)
res <- aov(df$魚の体重 ~ df$標本) # 情報を引き出すために変数に付値(代入)してsummary()
summary(res)


# anova()
anova(lm(df$魚の体重 ~ df$標本))




#
# p-value = 0.00805なので、0.008 < 0.05であり、帰無仮説は棄却される。
# つまり、魚の2つのグループはそれぞれ違った平均体重を持ち、
# グループ2のほうがグループ1よりも有意に重い。
#

R Console

> #
> # 分散分析 一元配置分散分析(対応なし)
> #
> 
> 
> 
> 
> #
> # 参考にするデータや帰無仮説の立て方は、
> #『パソコンで簡単! すぐできる生物統計 統計学の考え方から統計ソフトSPSSの使い方まで』
> # 第4章 p.69~70
> #
> 
> 
> 
> 
> #
> # 帰無仮説
> # "グループが同じ平均を持っている"
> # この例では、"2つのグループの魚が同じ平均体重を持っている"
> #
> 
> 
> 
> 
> # 2つのグループの魚の体重
> グループ1の体重_vec <- c(6, 7, 8)
> グループ2の体重_vec <- c(10, 11, 12)
> 魚の体重_vec <- c(グループ1の体重_vec, グループ2の体重_vec) # 2つのベクトルを1つにまとめる
> 
> 標本_vec <- c(rep("グループ1", 3), rep("グループ2", 3))
> 標本_fac <- factor(標本_vec) # factor型に変換
> 
> df <- data.frame(魚の体重 = 魚の体重_vec, 標本 = 標本_fac)
> df
  魚の体重      標本
1        6 グループ1
2        7 グループ1
3        8 グループ1
4       10 グループ2
5       11 グループ2
6       12 グループ2
> 
> 
> 
> 
> summary(df)
    魚の体重            標本  
 Min.   : 6.00   グループ1:3  
 1st Qu.: 7.25   グループ2:3  
 Median : 9.00                
 Mean   : 9.00                
 3rd Qu.:10.75                
 Max.   :12.00                
> 
> 
> 
> 
> # 分散分析 3つの関数
> #
> # oneway.test()
> # すべての群の母分散が等しいと仮定できるとき
> oneway.test(df$魚の体重 ~ df$標本, var.equal = TRUE)

    One-way analysis of means

data:  df$魚の体重 and df$標本
F = 24, num df = 1, denom df = 4, p-value = 0.00805

> 
> # すべての群の母分散が等しいと仮定できないとき
> oneway.test(df$魚の体重 ~ df$標本, var.equal = FALSE)

    One-way analysis of means (not assuming equal variances)

data:  df$魚の体重 and df$標本
F = 24, num df = 1, denom df = 4, p-value = 0.00805

> 
> 
> # aov()
> aov(df$魚の体重 ~ df$標本)
Call:
   aov(formula = df$魚の体重 ~ df$標本)

Terms:
                df$標本 Residuals
Sum of Squares       24         4
Deg. of Freedom       1         4

Residual standard error: 1
Estimated effects may be unbalanced
> res <- aov(df$魚の体重 ~ df$標本) # 情報を引き出すために変数に付値(代入)してsummary()
> summary(res)
            Df Sum Sq Mean Sq F value  Pr(>F)   
df$標本      1     24      24      24 0.00805 **
Residuals    4      4       1                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
> 
> 
> # anova()
> anova(lm(df$魚の体重 ~ df$標本))
Analysis of Variance Table

Response: df$魚の体重
          Df Sum Sq Mean Sq F value  Pr(>F)   
df$標本    1     24      24      24 0.00805 **
Residuals  4      4       1                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
> 
> 
> 
> 
> #
> # p-value = 0.00805なので、0.008 < 0.05であり、帰無仮説は棄却される。
> # つまり、魚の2つのグループはそれぞれ違った平均体重を持ち、
> # グループ2のほうがグループ1よりも有意に重い。
> #

参考文献

パソコンで簡単!すぐできる生物統計―統計学の考え方から統計ソフトSPSSの使い方まで

パソコンで簡単!すぐできる生物統計―統計学の考え方から統計ソフトSPSSの使い方まで

参考にしたRコード

Rによるやさしい統計学

Rによるやさしい統計学