テキストを読み込み、データフレームを作成
t <- read.table('data.txt', header=T)
平均
print(mean(t$salary)) #$〜は列名
中央値
print(median(t$salary))
分散
print(var(t$salary))
不偏標準偏差
print(sd(t$salary))
変動係数 = 標準偏差 / 平均
print(sd(t$salary) / mean(t$salary))
| 変動係数の範囲 | データのばらつき |
| 0〜0.2 | ほとんどない |
| 0.2〜0.5 | ややあり |
| 0.5〜1.0 | ある |
| 1.0以上 | かなりある |
山下さんの給与額を変更
t[t$name=='山下',]$salary <- 40
R言語 ファイルからデータを読み込み、グラフを描画する
Rによる箱ひげ図の描画
一元配置分散分析
※一元配置分散分析とは,例えば,数学のテストの得点といったような1要因に対して,ある学校のある学年のクラスA,BおよびCの平均点に差があるかどうか,というような3群以上の標本の平均値の差の有無を検定する手法である.
※分散分析(ANOVA, Analysis Of Variance) とは、3つ以上の群の平均値差の検定や、条件(の組み合わせ)の違いによって母平均が異なるかどうかを検定する方法です (注意:「分散」という名前に惑わされないように)
http://lang.sist.chukyo-u.ac.jp/classes/R/Rstatistics-06.html
(めっちゃ分かりやすい説明!)データにおいて変数がとる値は、以下の『要因』によるものと「誤差」によるものがあるとみなせます:
要因: 母平均に違いをもたらす原因
水準: ある要因の中に含まれる個々の条件そして、 「データ全体のばらつき」は、『要因によるばらつき』と『誤差によるばらつき』の和とみなせます。分散分析は、データ全体のばらつきを「平方和」として表し、それを要因ごとに分け、誤差に比べて大きな影響を与えている要因を探し出し、推測に利用する方法です。
具体的には、ある要因の水準ごとに分けたデータ(群)について、それぞれの群の平均を求めます。そして全データに対し、その群の平均を引いた差の2乗を求めます。Rで書くと(「全データ」変数に行列としてデータが入っているとします):
「それぞれのデータと群平均との差の2乗の和」が「群の中のデータのばらつき」を表し、これが(群内平方和)と呼ばれるものです。そして、これを群内の自由度(「各群のデータ数-1」の和)で割ったものが、各データの「誤差によるばらつき」を表しているとみなすことができます。
一方、「要因によるばらつき」は、群間のばらつきで表されます。それは「全データの平均と各群の平均の差」の2乗の和を、群間の自由度(群の数-1、つまり水準数-1)で割った値と計算されます:群間平方和を群間の自由度で割った値(「分子」の値)が『要因によるばらつき』です。これを「誤差によるばらつき」で割った値がFであり、Fの値によって要因のばらつきの影響を推定するのが分散分析です(この計算方法が「分散」という名前がついている理由です)。
変数の値に影響を及ぼす要因が1個の場合一元配置法、要因が2個の場合二元配置法、 3個以上の場合は多元配置法という。
また要因と水準の組み合わせごとに実験が繰り返されてデータがとられる場合を繰り返しのある二元配置法などと呼ぶ。
■分散分析の関数が返す式の意味
評価の印: 星印は有意(**は0.1%、は1%、は5%水準)、.は10%(「有意傾向」という)を表す
※R では,コマンド oneway.test(),または,コマンド aov() および anova() の組み合わせで一元配置分散分析を実行することができる.
※aov() と anova() による分散分析では,1要因に限らず,2要因の二元配置分散分析等も可能である.
model1 <- lm(Satisfaction ~ Benefit, data=benefit)
anova(model1)
Analysis of Variance Table
Response: SatisfactionDf Sum Sq Mean Sq F value Pr(>F)
Benefit 1 5.5104 5.5104 12.251 0.002024
Residuals 22 9.8958 0.4498
Signif. codes: 0 ‘**’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1
結果の fx の行の Df は級間 (群間) の自由度を意味しており,(級の個数 - 1) で計算される値である.この場合,データAからBの4個から1を引いた値 (3) となる.一方,Residuals の行の Df は級内 (郡内) の自由度を意味しており,(全標本の個数 - 級の個数) で計算される.この場合標本の数が21個なので,そこから級の個数4を引いた値 (17) となる.Sum Sq の列の数値はそれぞれ級間および級内の平方和を示す.また,Mean Sq の列の数値は級間および級内の平均平方であり,それぞれの平方和をそれぞれの自由度で割ることで算出される値である.F value はF値を意味しており,級間の平均平方を級内の平均平方で割った値である.最後の Pr(>F) は得られたF値をF分布に適用したときに得られるp値である.有意水準を5%に設定していた場合であると,p < 0.05 であるため,帰無仮説は棄却され,データAからDの平均値は全て等しいとはいえないという結論が導かれる.以上が一元配置分散分析である.
※別の方法によるp値の計算方法は以下のリンク参照
https://data-science.gr.jp/implementation/ist_r_oneway_anova.html
交互作用を図示
interaction.plot(benefit$Benefit, benefit$Age, benefit$Satisfaction)
interaction.plot(benefit$Age, benefit$Benefit, benefit$Satisfaction)
モデルの比較
注: モデルの比較に関してはDay4で詳細を解説
Multiple R-squared(決定係数):1に近いほど良い
summary(model1)$r.squared # model1
summary(model2)r.squared # model2
summary(model3)r.squared # model3
AIC:小さいほど良い
AIC(model1) # model1
AIC(model2) # model2
AIC(model3) # model3