My Notes

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

『多変量解析がわかる(ファーストブック)』 第1章 多変量解析の準備 をR(R言語)で

Rコードについて

主にデータが記載されているところだけ。

標準偏差 p.21~ Rコード

# 標準偏差 p.21~
df <- data.frame(個体番号 = 1:5,
                x = c(51, 49, 50, 57, 43))

df


# 平均
xbar <- sum(df$x) / length(df$x)
xbar


# 偏差平方和
Q <- sum((df$x - xbar)^2)
Q


#分散
V <- Q / length(df$x)
V


# 標準偏差
SD <- sqrt(V)
SD
round(SD, 1)

標準偏差 p.21~ R Console

> # 標準偏差 p.21~
> df <- data.frame(個体番号 = 1:5,
+                 x = c(51, 49, 50, 57, 43))
> 
> df
  個体番号  x
1        1 51
2        2 49
3        3 50
4        4 57
5        5 43
> 
> 
> # 平均
> xbar <- sum(df$x) / length(df$x)
> xbar
[1] 50
> 
> 
> # 偏差平方和
> Q <- sum((df$x - xbar)^2)
> Q
[1] 100
> 
> 
> #分散
> V <- Q / length(df$x)
> V
[1] 20
> 
> 
> # 標準偏差
> SD <- sqrt(V)
> SD
[1] 4.472136
> round(SD, 1)
[1] 4.5

相関 p.22~ Rコード

# 相関 p.22~
df <- data.frame(出席番号 = 1:8,
                数学 = c(71, 34, 58, 41, 69, 64, 16, 59),
                理科 = c(64, 48, 59, 51, 56, 65, 45, 59))

df


数学 <- df$数学
理科 <- df$理科


# 文字化けするなら。
par(family = "Osaka")
plot(数学, 理科)


# ggplot2
library("ggplot2")
# 文字化けするなら。
theme_set(theme_grey(base_family = "Osaka"))

ggplot(df, aes(x = 数学, y = 理科)) +
    geom_point()

相関 p.22~ R Console

> # 相関 p.22~
> df <- data.frame(出席番号 = 1:8,
+                 数学 = c(71, 34, 58, 41, 69, 64, 16, 59),
+                 理科 = c(64, 48, 59, 51, 56, 65, 45, 59))
> 
> df
  出席番号 数学 理科
1        1   71   64
2        2   34   48
3        3   58   59
4        4   41   51
5        5   69   56
6        6   64   65
7        7   16   45
8        8   59   59
> 
> 
> 数学 <- df$数学
> 理科 <- df$理科
> 
> 
> # 文字化けするなら。
> par(family = "Osaka")
> plot(数学, 理科)
> 
> 
> # ggplot2
> library("ggplot2") 
> # 文字化けするなら。
> theme_set(theme_grey(base_family = "Osaka"))
> 
> ggplot(df, aes(x = 数学, y = 理科)) +
+     geom_point()

散布図のスクリーンショット

f:id:my_notes:20170614021959p:plain

散布図のスクリーンショット(ggplot2)

f:id:my_notes:20170614022025p:plain

共分散、相関係数 p.24~ Rコード

# 共分散、相関係数 p.24~
df <- data.frame(出席番号 = 1:8,
                数学x = c(71, 34, 58, 41, 69, 64, 16, 59),
                理科y = c(64, 48, 59, 51, 56, 65, 45, 59))

df

id <- df$出席番号
x <- df$数学x
y <- df$理科y


# 平均
xbar <- mean(x)
ybar <- mean(y)


# 共分散
CV <- sum((x - xbar)*(y - ybar)) / length(id)
CV
round(CV, 1)


# 相関係数

# 偏差平方和
Qx <- sum((x - xbar)^2)
Qx

Qy <- sum((y - ybar)^2)
Qy

# 分散
Vx <- Qx / length(x)
Vx

Vy <- Qy / length(y)
Vy


# 標準偏差
SDx <- sqrt(Vx)
SDx
round(SDx, 1)

SDy <- sqrt(Vy)
SDy
round(SDy, 1)


# 相関係数(ピアソン)
r_xy <- CV / (SDx * SDy)
r_xy
round(r_xy, 2)

共分散、相関係数 p.24~ R Console

> # 共分散、相関係数 p.24~
> df <- data.frame(出席番号 = 1:8,
+                 数学x = c(71, 34, 58, 41, 69, 64, 16, 59),
+                 理科y = c(64, 48, 59, 51, 56, 65, 45, 59))
> 
> df
  出席番号 数学x 理科y
1        1    71    64
2        2    34    48
3        3    58    59
4        4    41    51
5        5    69    56
6        6    64    65
7        7    16    45
8        8    59    59
> 
> id <- df$出席番号
> x <- df$数学x
> y <- df$理科y
> 
> 
> # 平均
> xbar <- mean(x)
> ybar <- mean(y)
> 
> 
> # 共分散
> CV <- sum((x - xbar)*(y - ybar)) / length(id)
> CV
[1] 111.6875
> round(CV, 1)
[1] 111.7
> 
> 
> # 相関係数
> 
> # 偏差平方和
> Qx <- sum((x - xbar)^2)
> Qx
[1] 2618
> 
> Qy <- sum((y - ybar)^2)
> Qy
[1] 372.875
> 
> # 分散
> Vx <- Qx / length(x)
> Vx
[1] 327.25
> 
> Vy <- Qy / length(y)
> Vy
[1] 46.60938
> 
> 
> # 標準偏差
> SDx <- sqrt(Vx)
> SDx
[1] 18.09005
> round(SDx, 1)
[1] 18.1
> 
> SDy <- sqrt(Vy)
> SDy
[1] 6.827106
> round(SDy, 1)
[1] 6.8
> 
> 
> # 相関係数(ピアソン)
> r_xy <- CV / (SDx * SDy)
> r_xy
[1] 0.9043324
> round(r_xy, 2)
[1] 0.9

参考文献

多変量解析がわかる (ファーストブック)

多変量解析がわかる (ファーストブック)