pivot_longer() /
pivot_wider())| 対応あり | 対応なし |
|---|---|
| 同じ人を前後で測定 | 別の人を比較 |
| マッチドペア(年齢・性別を一致させたペア) | 無作為に2群に割り当て |
# 架空データ:睡眠改善プログラム前後の睡眠時間(時間)
set.seed(42)
n <- 15
sleep_data <- tibble(
id = 1:n,
before = round(rnorm(n, mean = 6.0, sd = 0.8), 1),
after = round(before + rnorm(n, mean = 0.8, sd = 0.5), 1)
)
sleep_data# 基本統計量
sleep_data |>
summarise(
mean_before = mean(before),
sd_before = sd(before),
mean_after = mean(after),
sd_after = sd(after),
mean_diff = mean(after - before)
)分析・グラフ作成でよく使う形式:測定値と時点が別の列
# pivot_longer でワイド → ロングに変換
sleep_long <- sleep_data |>
pivot_longer(
cols = c(before, after), # 変換する列
names_to = "time", # 時点を入れる新しい列名
values_to = "sleep" # 値を入れる新しい列名
) |>
mutate(time = factor(time, levels = c("before", "after"),
labels = c("プログラム前", "プログラム後")))
sleep_long# 可視化(対応あり:同じ人をつなぐ線を引く)
ggplot(sleep_long, aes(x = time, y = sleep, group = id)) +
geom_line(alpha = 0.4, color = "gray60") +
geom_point(aes(color = time), size = 3, alpha = 0.8) +
stat_summary(aes(group = 1), fun = mean, geom = "line",
linewidth = 1.5, color = "steelblue", linetype = "dashed") +
scale_color_brewer(palette = "Set1") +
labs(title = "睡眠改善プログラム前後の睡眠時間",
x = "時点", y = "睡眠時間(時間)", color = "時点") +
theme_bw() +
theme(legend.position = "none")##
## Paired t-test
##
## data: sleep_data$after and sleep_data$before
## t = 3.6211, df = 14, p-value = 0.00278
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## 0.2554933 0.9978400
## sample estimates:
## mean difference
## 0.6266667
# 方法2:差分ベクトルを作って1標本t検定として実行(同じ結果)
diff_sleep <- sleep_data$after - sleep_data$before
t.test(diff_sleep, mu = 0)##
## One Sample t-test
##
## data: diff_sleep
## t = 3.6211, df = 14, p-value = 0.00278
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 0.2554933 0.9978400
## sample estimates:
## mean of x
## 0.6266667
Paired t-test
t = 6.0, df = 14, p-value < 0.001
95 percent confidence interval:
0.5 1.1
sample estimates:
mean of the differences
0.8
mean of the differences:差の平均(= after の平均 −
before の平均)同じデータを誤って「対応なし」で分析すると:
##
## Welch Two Sample t-test
##
## data: sleep_data$after and sleep_data$before
## t = 1.75, df = 25.587, p-value = 0.09211
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.1099958 1.3633291
## sample estimates:
## mean of x mean of y
## 7.000000 6.373333
対応のある分析の方が一般的に検出力が高い(個人差を除去できるため)。 データ構造を正しく理解して,適切な分析を選ぶことが重要。
以下のデータはそれぞれ「対応あり」か「対応なし」か判断してください。
以下のデータを pivot_longer()
でロング形式に変換してください。
# 架空データ:3名の授業前後の不安度スコア
anxiety_data <- tibble(
id = c("A", "B", "C"),
pre = c(7, 5, 8),
post = c(4, 3, 6)
)
anxiety_data演習2のデータ(anxiety_data)を使って,
授業前後で不安度スコアが有意に変化したか検定してください。
演習3の結果を1〜2文でまとめてください。
t.test(..., paired = TRUE) で実行pivot_longer()
でワイド→ロング形式の変換が簡単にできる