0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【R入門】R言語の基本:一元配置分散分析(対応あり)

Last updated at Posted at 2021-04-05

統計とR言語の勉強をしています。
「Rによるやさしい統計学」の写経で勉強。

#実行環境

  • Windows10 Pro 64bit
  • R:3.4.3
  • RStudio:1.1.383

RStudioのConsoleを使って実行しています

#一元配置分散分析(対応あり)
3つ以上の平均値を比較するための統計的手法で分散分析があります。その対応ありバージョンです。例題から実施していきます。

項目 内容
前提 5人の学生が線形代数、微分積分、確率統計に関する好感度のアンケートを取得。3つの好感度について有意な差があるといえるか
帰無仮説 3科目の好感度の母平均は等しい
対立仮説 3科目の好感度の母平均は等しくない
※3群のうち1つでも母平均が異なる場合も対立仮説が支持
検定統計量 $\frac{\frac{条件平方和}{条件自由度}}{\frac{残差平方和}{残差自由度}}$
有意水準 5%

対応なしとして検定をするとこんな感じです。p値が0.112で棄却域にないため、帰無仮説が支持されます。

> koukando <- c(7,8,9,5,6,5,4,7,1,3,8,6,7,2,5)
> kamoku <- factor(c(rep("線形代数",5),rep("微分積分",5),rep("確率統計",5)))
> summary(aov(koukando~kamoku))
            Df Sum Sq Mean Sq F value Pr(>F)
kamoku       2  22.53  11.267   2.641  0.112
Residuals   12  51.20   4.267               

今回は5人の学生個人を認識して対応させるので、人の変数を作って検定をしていきます。科目のp値が0.002095で棄却域にあるため、帰無仮説を棄却します(3科目の好感度の母平均は等しくない)。

> hito <- factor(rep(c("田中","岸","大引","吉川","荻野"),3))
> summary(aov(koukando~kamoku+hito))
            Df Sum Sq Mean Sq F value   Pr(>F)    
kamoku       2  22.53  11.267    14.7 0.002095 ** 
hito         4  45.07  11.267    14.7 0.000931 ***
Residuals    8   6.13   0.767                     
---
Signif. codes:  0 *** 0.001 ** 0.01 * 0.05 . 0.1   1
#全データ
> all_data <- matrix(c(7,8,9,5,6,5,4,7,1,3,8,6,7,2,5),nrow=5,ncol=3)
> all_data
     [,1] [,2] [,3]
[1,]    7    5    8
[2,]    8    4    6
[3,]    9    7    7
[4,]    5    1    2
[5,]    6    3    5

#科目平均
> kamoku_average <- colMeans(all_data)
> kamoku_average
[1] 7.0 4.0 5.6

#人平均
> hito_average <- rowMeans(all_data)
> hito_average
[1] 6.666667 6.000000 7.666667 2.666667 4.666667

#全平均
> all_average <- mean(all_data)
> all_average
[1] 5.533333

#全平均行列
> all_average_matrix <- matrix(rep(all_average,15),nrow=5,ncol=3)
> all_average_matrix
         [,1]     [,2]     [,3]
[1,] 5.533333 5.533333 5.533333
[2,] 5.533333 5.533333 5.533333
[3,] 5.533333 5.533333 5.533333
[4,] 5.533333 5.533333 5.533333
[5,] 5.533333 5.533333 5.533333

#科目平均行列
> kamoku_average_matrix <- matrix(rep(kamoku_average,5),nrow=5,ncol=3,byrow=TRUE)
> kamoku_average_matrix
     [,1] [,2] [,3]
[1,]    7    4  5.6
[2,]    7    4  5.6
[3,]    7    4  5.6
[4,]    7    4  5.6
[5,]    7    4  5.6

#人平均行列
> hito_average_matrix <- matrix(rep(hito_average,3),nrow=5,ncol=3)
> hito_average_matrix
         [,1]     [,2]     [,3]
[1,] 6.666667 6.666667 6.666667
[2,] 6.000000 6.000000 6.000000
[3,] 7.666667 7.666667 7.666667
[4,] 2.666667 2.666667 2.666667
[5,] 4.666667 4.666667 4.666667

#全体
> zentai <- all_data - all_average_matrix
> zentai
           [,1]       [,2]       [,3]
[1,]  1.4666667 -0.5333333  2.4666667
[2,]  2.4666667 -1.5333333  0.4666667
[3,]  3.4666667  1.4666667  1.4666667
[4,] -0.5333333 -4.5333333 -3.5333333
[5,]  0.4666667 -2.5333333 -0.5333333

#条件
> jouken <- kamoku_average_matrix - all_average_matrix
> jouken
         [,1]      [,2]       [,3]
[1,] 1.466667 -1.533333 0.06666667
[2,] 1.466667 -1.533333 0.06666667
[3,] 1.466667 -1.533333 0.06666667
[4,] 1.466667 -1.533333 0.06666667
[5,] 1.466667 -1.533333 0.06666667

#個人差
> kojinsa <- hito_average_matrix - all_average_matrix
> kojinsa
           [,1]       [,2]       [,3]
[1,]  1.1333333  1.1333333  1.1333333
[2,]  0.4666667  0.4666667  0.4666667
[3,]  2.1333333  2.1333333  2.1333333
[4,] -2.8666667 -2.8666667 -2.8666667
[5,] -0.8666667 -0.8666667 -0.8666667

#残差
> zansa <- all_data - all_average_matrix - jouken - kojinsa
> zansa
           [,1]       [,2]        [,3]
[1,] -1.1333333 -0.1333333  1.26666667
[2,]  0.5333333 -0.4666667 -0.06666667
[3,] -0.1333333  0.8666667 -0.73333333
[4,]  0.8666667 -0.1333333 -0.73333333
[5,] -0.1333333 -0.1333333  0.26666667

#全体平方和
> zentai_heihouwa <- sum(zentai^2)
> zentai_heihouwa
[1] 73.73333

#条件平方和
> jouken_heihouwa <- sum(jouken^2)
> jouken_heihouwa
[1] 22.53333

#個人差平方和
> kojin_heihouwa <- sum(kojinsa^2)
> kojin_heihouwa
[1] 45.06667

#残差平方和
> zansa_heihouwa <- sum(zansa^2)
> zansa_heihouwa
[1] 6.133333

#条件平方和 + 個人差平方和 + 残差平方和 = 全体平方和
> jouken_heihouwa + kojin_heihouwa + zansa_heihouwa
[1] 73.73333

元データから全平均行列、科目平均行列、人平均行列を作っている部分の図解です。
30.R_VarAnalitics01.JPG

全体平均平方部分の図解。
30.R_VarAnalitics02.JPG

科目平均平方部分の図解。
30.R_VarAnalitics03.JPG

個人差平均平方部分の図解。
30.R_VarAnalitics04.JPG

残差平均平方部分の図解。残差はまさに残分という点がわかります。
30.R_VarAnalitics05.JPG

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?