平均値の差の検定     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

Made with Macintosh