-
Notifications
You must be signed in to change notification settings - Fork 2
/
ch1.R
124 lines (96 loc) · 2.7 KB
/
ch1.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 環境の初期化 ----------------------------------------------------------
rm(list = ls())
## ----ch1Demo--------------------------------------------------------------------------------
## 設定と準備
rho <- 0.5 # 母相関の設定
n <- 25 # サンプルサイズ
iter <- 1000 # 反復回数
# Demo 1 ----------------------------------------------------------
# 結果を格納するオブジェクト
r <- rep(0, iter)
## シミュレーション
set.seed(123)
for (i in 1:iter) {
Y1 <- rnorm(n, 0, 1)
Y2 <- Y1 * rho + rnorm(n, 0, (1 - rho^2)^0.5)
r[i] <- cor(Y1, Y2)
}
## 結果
r |> hist(xlim = c(-0.2, 1))
# Demo2 -----------------------------------------------------------
## 設定と準備
rho <- 0.5 # 母相関の設定
n <- 100 # サンプルサイズ
iter <- 1000 # 反復回数
# 結果を格納するオブジェクト
r <- rep(0, iter)
## シミュレーション
set.seed(123)
for (i in 1:iter) {
Y1 <- rnorm(n, 0, 1)
Y2 <- Y1 * rho + rnorm(n, 0, (1 - rho^2)^0.5)
r[i] <- cor(Y1, Y2)
}
## 結果
r |> hist(xlim = c(-0.2, 1))
## 設定と準備
rho <- 0
n <- 2500
iter <- 10000
# 結果を格納するオブジェクト
p <- rep(0, iter)
# Demo3 -----------------------------------------------------------
## シミュレーション
set.seed(123)
for (i in 1:iter) {
Y1 <- rnorm(n, 0, 1)
Y2 <- Y1 * rho + rnorm(n, 0, (1 - rho^2)^0.5)
p[i] <- cor.test(Y1, Y2)$p.value
}
## 結果
ifelse(p < 0.05, 1, 0) |> mean()
# Demo 4 ----------------------------------------------------------
## 設定と準備
rho <- 0
N <- 2500
iter <- 10000
set.seed(123)
p <- rep(0, iter)
## シミュレーション本体
for (i in 1:iter) {
Y1 <- rnorm(n, 0, 1)
Y2 <- Y1 * rho + rnorm(n, 0, (1 - rho^2)^0.5)
p[i] <- cor.test(Y1, Y2)$p.value
}
## 結果
ifelse(p < 0.05, 1, 0) |> mean()
# Demo 5 ----------------------------------------------------------
## 実行に時間がかかります。ご注意ください。
## 設定と準備
rho <- 0
n <- 25
iter <- 10000
alpha <- 0.05
# 結果を格納するオブジェクト
p <- rep(0, iter)
## シミュレーション
set.seed(123)
for (i in 1:iter) {
# 最初のデータ
Y1 <- rnorm(n, 0, 1)
Y2 <- Y1 * rho + rnorm(n, 0, (1 - rho^2)^0.5)
p[i] <- cor.test(Y1, Y2)$p.value
# データ追加
count <- 0
## p値が5%を下回るか,データが当初の倍になるまで増やし続ける
while (p[i] >= alpha && count < n * 2) {
# 有意じゃなかったとき,それぞれの変数に1つデータを追l加
Y1_add <- rnorm(1, 0, 1)
Y1 <- c(Y1, Y1_add)
Y2 <- c(Y2, Y1_add * rho + rnorm(1, 0, (1 - rho^2)^0.5))
p[i] <- cor.test(Y1, Y2)$p.value
count <- count + 1
}
}
## 結果
ifelse(p < 0.05, 1, 0) |> mean()