R 相関係数
2つの変数同士の関係について。
データは、『Rによるやさしい統計学』 https://www.amazon.co.jp/dp/4274067106 3章から。
勉強する内容
- 共分散の問題点: 大きさが測定単位に依存
- 相関係数: 共分散を2変数の標準偏差の積で割る
- cor(): 相関係数
- 相関係数は共分散の分母がnの時もn-1のときも同じ値になる
- 相関係数の最大値: 1
- 相関係数は2変数の相関関係が強いほど絶対値は大きくなる
- 相関係数の大きさの評価 同書「表3.1」参照
相関係数
相関係数を 、右辺の分子が共分散、分母がそれぞれ変数xとyの標準偏差であるとき
と表すことができる。
s_test1 <- c(6,10,6,10,5,3,5,9,3,3,11,6,11,9,7,5,8,7,7,9) s_test2 <- c(10,13,8,15,8,6,9,10,7,3,18,14,18,11,12,5,7,12,7,7) p_test1 <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) # 相関係数 cov(s_test1,s_test2) / (sd(s_test1) * sd(s_test2)) # 相関係数 関数を用いた場合 cor(s_test1,s_test2) cor(p_test1,s_test1) cor(p_test1,s_test2)
実行結果
> s_test1 <- c(6,10,6,10,5,3,5,9,3,3,11,6,11,9,7,5,8,7,7,9) > s_test2 <- c(10,13,8,15,8,6,9,10,7,3,18,14,18,11,12,5,7,12,7,7) > p_test1 <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) > cov(s_test1,s_test2) / (sd(s_test1) * sd(s_test2)) [1] 0.749659 > cor(s_test1,s_test2) [1] 0.749659 > cor(p_test1,s_test1) [1] 0.3826645 > cor(p_test1,s_test2) [1] -0.09350516
R 散布図、共分散
2つの変数同士の関係について。
データは、『Rによるやさしい統計学』 https://www.amazon.co.jp/dp/4274067106 3章から。
勉強する内容
- 相関: 量的変数同士の関係
- 連関: 質的変数同士の関係
- 正の相関: 散布図を描いて右上がりの傾向
- 負の相関: 散布図を描いて右下がりの傾向
- 無相関
- plot(): 散布図
- 相関係数: 相関の強さの程度を表す数値
- 共分散: 「偏差の積の平均」
- cov(): 共分散(不偏共分散)
共分散 Covariance
すなわち、
Rのプログラミング
s_test1 <- c(6,10,6,10,5,3,5,9,3,3,11,6,11,9,7,5,8,7,7,9) s_test2 <- c(10,13,8,15,8,6,9,10,7,3,18,14,18,11,12,5,7,12,7,7) p_test1 <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) # 散布図を描く png("plot3-1.png", width = 500, height = 500) plot(s_test1,s_test2) dev.off() png("plot3-2.png", width = 500, height = 500) plot(p_test1,s_test1) dev.off() png("plot3-3.png", width = 500, height = 500) plot(p_test1,s_test2) dev.off() # 共分散(nで割った場合) covariance_1_2 <- sum((s_test1 - mean(s_test1)) * (s_test2 - mean(s_test2))) / length(s_test1) covariance_1_2 # 共分散(nで割った場合)別の求め方 covariance_1_2<- mean((s_test1 - mean(s_test1)) * (s_test2 - mean(s_test2))) covariance_1_2 # 共分散(n-1で割った場合) cov(s_test1,s_test2) # 共分散(nで割った場合)別の求め方 cov(s_test1,s_test2) * (length(s_test1)-1)/ length(s_test1)
実行結果
> > s_test1 <- c(6,10,6,10,5,3,5,9,3,3,11,6,11,9,7,5,8,7,7,9) > s_test2 <- c(10,13,8,15,8,6,9,10,7,3,18,14,18,11,12,5,7,12,7,7) > p_test1 <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) > > png("plot3-1.png", width = 500, height = 500) > plot(s_test1,s_test2) > dev.off() pdf 2 > > png("plot3-2.png", width = 500, height = 500) > plot(p_test1,s_test1) > dev.off() pdf 2 > > png("plot3-3.png", width = 500, height = 500) > plot(p_test1,s_test2) > dev.off() pdf 2 > covariance_1_2 <- sum((s_test1 - mean(s_test1)) * (s_test2 - mean(s_test2))) / length(s_test1) > covariance_1_2 [1] 7.55 > covariance_1_2<- mean((s_test1 - mean(s_test1)) * (s_test2 - mean(s_test2))) > covariance_1_2 [1] 7.55 > cov(s_test1,s_test2) [1] 7.947368 > cov(s_test1,s_test2) * (length(s_test1)-1)/ length(s_test1) [1] 7.55 >
R 平均偏差、範囲(レンジ)、標準化
勉強する内容
- 平均偏差: 平均からの偏差の絶対値の平均
- abs() : 絶対値
- 範囲(レンジ): 最大値から最小値をひいたもの
- 標準化: 平均と標準偏差がある特定の値になるように、すべてのデータの値を同じ式を使って変換
- z得点: 平均0、標準偏差1になるように変換した標準得点
データは、『Rによるやさしい統計学』 https://www.amazon.co.jp/dp/4274067106 2章から。
平均偏差
レンジ
のとき
z得点 (平均が 標準偏差が のとき)
test_a <- c(10,13,8,15,8) test_a - mean(test_a) abs(test_a - mean(test_a)) mean(abs(test_a - mean(test_a))) max(test_a) min(test_a) max(test_a) - min(test_a) psychological_test <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) # 心理テスト平均 mean(psychological_test) # 参考:心理テスト不偏分散 var(psychological_test) # 心理テスト標本分散 psy_hyouhonbunsan <- var(psychological_test) * (length(psychological_test)-1) / length(psychological_test) # 参考:標準偏差 sd(psychological_test) # 心理テスト標本分散の標準偏差 psy_hyoujunhensa <- sqrt(psy_hyouhonbunsan) psy_hyoujunhensa psy_z_tokuten <- (psychological_test - mean(psychological_test)) / psy_hyoujunhensa psy_z_tokuten # 心理学z得点平均 mean(psy_z_tokuten) # 心理学z得点の標準偏差 sqrt(mean((psy_z_tokuten - mean(psy_z_tokuten))^2))
実行結果
> test_a <- c(10,13,8,15,8) > test_a - mean(test_a) [1] -0.8 2.2 -2.8 4.2 -2.8 > abs(test_a - mean(test_a)) [1] 0.8 2.2 2.8 4.2 2.8 > mean(abs(test_a - mean(test_a))) #平均偏差 [1] 2.56 > max(test_a) [1] 15 > min(test_a) [1] 8 > max(test_a) - min(test_a) #範囲(レンジ) [1] 7 > > > psychological_test <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) > mean(psychological_test) [1] 10 > var(psychological_test) #参考までに不偏分散 [1] 11.68421 > psy_hyouhonbunsan <- var(psychological_test) * (length(psychological_test)-1) / length(psychological_test) > sd(psychological_test) #参考までに不偏分散の標準偏差 [1] 3.418217 > psy_hyoujunhensa <- sqrt(psy_hyouhonbunsan) > psy_hyoujunhensa [1] 3.331666 > psy_z_tokuten <- (psychological_test - mean(psychological_test)) / psy_hyoujunhensa > psy_z_tokuten [1] 0.9004503 1.2006005 -0.9004503 0.6003002 0.0000000 -1.2006005 [7] -0.6003002 1.5007506 -1.8009007 1.2006005 -0.3001501 -1.2006005 [13] 0.0000000 0.6003002 -1.5007506 0.6003002 -0.6003002 -0.6003002 [19] 0.6003002 1.5007506 > mean(psy_z_tokuten) [1] -2.753874e-18 #実質0 > sqrt(mean((psy_z_tokuten - mean(psy_z_tokuten))^2)) [1] 1 >
はてなブログのMarkdown記法で数式を入力する
うまく入力できないので、先達の記事を読んで入力方法をまとめる。
参考にしたサイト
- http://www.f-sp.com/entry/2016/08/07/182629
- http://auewe.hatenablog.com/entry/2013/12/01/062548
- http://hikaru515.hatenablog.com/entry/2016/07/09/080000
- http://www.kegamin.com/entry/20151111/1447201914
使い方。
- MathJaxを使う。
ブロック要素の場合
http://www.f-sp.com/entry/2016/08/07/182629 によると
[tex: \displaystyle \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!} (x-a)^{n} ]
実行結果
http://auewe.hatenablog.com/entry/2014/05/10/050403 によると
[tex:{ \displaystyle b_n = \sum_{m=0}^{N-1} a_m }]
実行結果
インライン要素の場合
http://www.kegamin.com/entry/20151111/1447201914 によると
[tex: {\theta_0}]と[tex: {\theta_1}]は同時(simultaneous)に更新する
実行結果
とは同時(simultaneous)に更新する
その他
- http://auewe.hatenablog.com/entry/2013/12/01/062548 によれば「MathJax環境内では
_,*[]()
の文字をエスケープしないと、 数式化されない場合がある。」 - LaTeXのコマンド http://www1.kiy.jp/~yoka/LaTeX/latex.html
- MathJaxで正しく書けたかどうか確認するサイト https://www.tuhh.de/MathJax/test/sample-dynamic.html
- 数式の中に日本語を含める場合、
\mbox{}
を使う。
R 不偏分散 標本分散 標準偏差
データは、『Rによるやさしい統計学』 https://www.amazon.co.jp/dp/4274067106 2章から。
勉強する内容
- var() : 不偏分散 (データの個数-1で割る)
- sd() : 標準偏差
不偏分散
test_a <- c(10,13,8,15,8) var(test_a) variance <- var(test_a) sample_variance <- variance * (length(test_a) - 1) / length(test_a) sample_variance sd(test_a) sqrt(sd(test_a)^2 * (length(test_a) - 1) / length(test_a))
実行結果
> test_a <- c(10,13,8,15,8) > var(test_a) #不偏分散 [1] 9.7 > variance <- var(test_a) > sample_variance <- variance * (length(test_a) - 1) / length(test_a) #標本分散 > sample_variance [1] 7.76 > sd(test_a) [1] 3.114482 > sqrt(sd(test_a)^2 * (length(test_a) - 1) / length(test_a)) [1] 2.785678 >
R 代表値 分散 標準偏差
Rによるやさしい統計学 https://www.amazon.co.jp/dp/4274067106 2章から。
代表値
代表値とは、分布の中心的位置を示す、そのデータを代表する値のこと
勉強する内容
- 平均値: 分布の中心的位置を示す、そのデータを代表する値
- sum(): 合計
- length(): データの個数
- mean(): 平均
- 中央値: データを大きさの順に並べた場合、真ん中に位置する値
- table(): 度数分布
- 最頻値: 最も頻繁に観測される値。Rには最頻値を求める関数はない。
test_a <- c(10,13,8,15,8) sum(test_a) sum(test_a)/length(test_a) mean(test_a) table(test_a)
> test_a <- c(10,13,8,15,8) > sum(test_a) [1] 54 > sum(test_a)/length(test_a) [1] 10.8 > mean(test_a) [1] 10.8 > table(test_a) test_a 8 10 13 15 2 1 1 1 >
平均を数式で表すと
分散 標準偏差
データを 、データの平均をとしたとき、 分散を式で表すと
テキスト通りにやってみる。
test_a <- c(10,13,8,15,8) test_a_heikin <- mean(test_a) heikin_karano_hensa <- test_a - test_a_heikin heikin_karano_hensa heikin_karano_hensano_nijou <- heikin_karano_hensa^2 heikin_karano_hensano_nijou heikin_karano_hensano_nijou_wa <- sum(heikin_karano_hensano_nijou) heikin_karano_hensano_nijou_wa data_suu <- length(test_a) data_suu bunsan <- heikin_karano_hensano_nijou_wa/data_suu bunsan sqrt(bunsan)
実行結果
> test_a <- c(10,13,8,15,8) > test_a_heikin <- mean(test_a) > heikin_karano_hensa <- test_a - test_a_heikin > heikin_karano_hensa [1] -0.8 2.2 -2.8 4.2 -2.8 > heikin_karano_hensano_nijou <- heikin_karano_hensa^2 > heikin_karano_hensano_nijou [1] 0.64 4.84 7.84 17.64 7.84 > heikin_karano_hensano_nijou_wa <- sum(heikin_karano_hensano_nijou) > heikin_karano_hensano_nijou_wa [1] 38.8 > data_suu <- length(test_a) > data_suu [1] 5 > bunsan <- heikin_karano_hensano_nijou_wa/data_suu #分散 > bunsan [1] 7.76 > sqrt(bunsan) #標準偏差 [1] 2.785678
R データの視覚的表現
Rによるやさしい統計学 https://www.amazon.co.jp/dp/4274067106 2章から。
勉強する内容
- 変数に代入する。代入は
<-
を用いる。 - カウントするにはtable関数を用いる。
- ヒストグラムを描くには
hist()
を用いる。
> Method_of_teaching <- c("C","B","B","A","B","C","A","D","D","D","A","A","A","C","B","D","C","C","B","D") > Method_of_teaching [1] "C" "B" "B" "A" "B" "C" "A" "D" "D" "D" "A" "A" "A" "C" "B" "D" "C" "C" "B" [20] "D" > tab (補完機能がある) table tabulate > table(Method_of_teaching) Method_of_teaching A B C D 5 5 5 5 > psychological_test <- c(13,14,7,12,10,6,8,15,4,14,9,6,10,12,5,12,8,8,12,15) > psychological_test [1] 13 14 7 12 10 6 8 15 4 14 9 6 10 12 5 12 8 8 12 15 > hist(psychological_test) >
ファイルRplots.pdfは作業ディレクトリに作成されたが、0byteで中身がなかった。 そこで、グラフの描画スペースの高さと幅を指定して、今度はpng形式でグラフを作成してみた。
> png("plot1.png", width = 500, height = 500) > hist(psychological_test) > dev.off() pdf 2 >
なお、pngをpdfに変更してPDFファイルを作成したところ、文字が出力されなかった。