Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【R】KS検定のメモ

2つのデータに対してKS検定をする場合

% x=rnorm(10, mean = 1)
% y=rnorm(10, mean = 1)
% x
[1] 0.91430534 1.59262261 1.52565219 1.68065990 2.35755910 1.91386531
[7] -2.26359817 0.08465784 0.06163455 -0.10943752
% y
[1] 2.2200235 2.2241460 1.0733582 0.8002340 1.6228854 0.2652880
[7] 1.4286084 -0.6869875 0.1918104 2.2083442
% ks.test(x, y)

Two-sample Kolmogorov-Smirnov test

data: x and y
D = 0.3, p-value = 0.7869
alternative hypothesis: two-sided

1つのデータに対した正規分布のKS検定をする場合

% x=rnorm(10, mean = 1)
% ks.test(x, pnorm)

One-sample Kolmogorov-Smirnov test

data: x
D = 0.43645, p-value = 0.02996
alternative hypothesis: two-sided

2つの引数は、比較したい分布を指定する文字列、正規分布なら pnorm、ポアソン分布なら ppois、一様分布の場合 punif を指定できる

正規分布の場合だと、平均と分散も指定可能

% ks.test(x=vx,y="pnorm",mean=mean(vx),sd=sd(vx))

One-sample Kolmogorov-Smirnov test

data: vx
D = 0.13793, p-value = 0.9196
alternative hypothesis: two-sided

片側検定/両側検定の切り替えはalternativaで行う

デフォルトでは両側検定になっている

% ks.test(x, y, , alternative="t")

Two-sample Kolmogorov-Smirnov test

data: x and y
D = 0.3, p-value = 0.7869
alternative hypothesis: two-sided

% ks.test(x, y, , alternative="l")

Two-sample Kolmogorov-Smirnov test

data: x and y
D^- = 0.1, p-value = 0.9048
alternative hypothesis: the CDF of x lies below that of y

% ks.test(x, y, , alternative="g")

Two-sample Kolmogorov-Smirnov test

data: x and y
D^+ = 0.3, p-value = 0.4066
alternative hypothesis: the CDF of x lies above that of y

検定結果からp値を取り出したいときは、

結果をなにかに代入して、namesで中身を調べる→ p値のみを取り出す

% out <- ke.test(x, y)
% names(out)
[1] "statistic" "p.value" "alternative" "method" "data.name"
% out$p.value
[1] 0.7869298