平均値の差の検定 Last modified: Aug 20, 2009
目的
二次データから,二群の平均値の差の検定を行う。
注: 一次データが利用できる場合には,R に本来用意されている t.test を使うことができる
使用法
my.t.test(nx, mx, ux, ny, my, uy, var.equal = FALSE)
引数
nx 第一群のデータ個数
mx 第一群の平均値
vx 第一群の不偏分散
ny 第二群のデータ個数
my 第二群の平均値
vy 第二群の不偏分散
var.equal 等分散性を仮定するとき TRUE,そうでないときは省略するか FALSE
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/my_t_test.R", encoding="euc-jp")
# 二次データから,二群の平均値の差の検定を行う
my.t.test <- function( nx, # 第一群のデータ個数
mx, # 第一群の平均値
ux, # 第一群の不偏分散
ny, # 第二群のデータ個数
my, # 第二群の平均値
uy, # 第二群の不偏分散
var.equal = FALSE) # 等分散を仮定するか
{
data.name <- sprintf("\nn1 = %s, mean1 = %s, variance1 = %s\nn2 = %s, mean2 = %s, variance2 = %s",
nx, mx, ux, ny, my, uy)
if (var.equal) { # 等分散を仮定するとき,
method <- "等分散を仮定した,二群の平均値の差の検定"
df <- nx+ny-2 # 自由度
v <- ((nx-1)*ux+(ny-1)*uy)/df # プールした不偏分散
tstat <- abs(mx-my)/sqrt(v*(1/nx+1/ny)) # 検定統計量
}
else { # 等分散を仮定しないとき
method <- "ウエルチの方法による,二群の平均値の差の検定"
tstat <- abs(mx-my)/sqrt(ux/nx+uy/ny) # 検定統計量
df <- (ux/nx+uy/ny)^2/((ux/nx)^2/(nx-1)+(uy/ny)^2/(ny-1)) # 自由度(小数点つき)
}
P <- 2*pt(tstat, df, lower.tail=FALSE) # P 値
names(tstat) <- "t"
names(df) <- "df"
return(structure(list(statistic=tstat, parameter=df, p.value=P,
method=method, data.name=data.name), class="htest"))
}
使用例
> my.t.test(36, 82.6, 15.3, 43, 84.5, 16.2, var.equal=TRUE) # 等分散性を仮定する場合
等分散を仮定した,二群の平均値の差の検定
data:
n1 = 36, mean1 = 82.6, variance1 = 15.3
n2 = 43, mean2 = 84.5, variance2 = 16.2
t = 2.1165, df = 77, p-value = 0.03753
> my.t.test(42, 15.2, 1.1, 63, 12.7, 3.2, var.equal=FALSE) # 等分散性を仮定しない場合
ウエルチの方法による,二群の平均値の差の検定
data:
n1 = 42, mean1 = 15.2, variance1 = 1.1
n2 = 63, mean2 = 12.7, variance2 = 3.2
t = 9.0103, df = 101.581, p-value = 1.296e-14
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI