Rで学ぶ統計講座(初級)

Rによる平均の差の検定 対応あるサンプル

2つの集団の平均を比較したいときには、各々のサンプルの平均値に差があるといえるかどうかについての検定を行う。

スマートフォン利用時間の変化に関する調査データ(架空データ)を用いる。

ある大学で学生の一日あたりのスマートフォンの利用時間を調査した。学生を無作為で50人抽出し、一週間の平均利用時間を記録する。

調査は同じ学生を対象にある人気ゲームアプリリリース前と後の二回実施し、その結果をまとめた(架空調査)。

このデータから人気ゲームアプリリリースの前後でスマホ利用時間が増えたと言えるか。

行ごとのデータがペアとして扱える場合には「対応あるサンプル」として平均値の差の検定を行う。

Rスクリプト

data <- read.csv("https://kyoto-edu.sakura.ne.jp/weblesson/statistics/data/smartphone01-C.csv", fileEncoding = "utf-8")
summary(data)
x1 <- data$Before
x2 <- data$After

source("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/socialStatisticsBasic.R", encoding="UTF-8")
output.t.test1 <- t.test.paired(x1,x2)

#結果出力
output.t.test1

#ファイルへの書き出し
write.output(output.t.test1,"output.t.test1.csv")

t.test.paired関数(socialStatisticsBasic.Rで読み込まれる自作関数)

t.test.paired(x1,x2)
  • x1=平均値の比較をしたい間隔・比例尺度のベクトルデータ (例) c(1,3,2,6)
  • x2=平均値の比較をしたい間隔・比例尺度のベクトルデータ (例) c(1,3,2,6)

出力結果

$statistics
                      x1         x2
N              50.000000  50.000000
mean          183.400000 197.660000
u              69.157318  68.951509
SE              9.780322   9.751216
Missing value   0.000000   0.000000

$test.result
                 t-test
mean diff -1.426000e+01
sd         1.160544e+01
SE         1.641256e+00
t         -8.688466e+00
df         4.900000e+01
p(!=)      1.725597e-11
p(>)       1.000000e+00
p(<)       8.627965e-12
Upper     -1.096177e+01
Lower     -1.755823e+01
d         -1.228735e+00
r          7.787120e-01
  • 平均の差の検定(片側)
    ※アプリリリースの影響を知りたい。アプリに関心がない人は利用時間に影響もない。関心があって利用時間が減るというケースが想定可能かどうかで片側検定か両側検定かの判断が分かれる。
      df 49
    • t -8.688466e+00
    • p(<) 8.627965e-12
  • 効果量
    • d -1.228735e+00
    • r 7.787120e-01

考察例

リリース前の平均利用時間は183.40、リリース後の平均利用時間は197.66であり、リリース後のほうが利用時間が長いという結果が得られた。

リリース前とリリース後に利用時間に差があるといえるかどうか対応あるデータの平均の差の検定(片側)を行ったところ、1%水準で有意差が見られた(t(49)=-8.69, p<.01, r=0.78)。また効果量よりこの差は十分大きいといって良い。

この結果より人気アプリリリースによりスマホ利用時間は増えたと言える。