対応のある平均値の差の検定     Last modified: Aug 20, 2009

目的

二次データに基づき,対応のある平均値の差の検定を行う

注: 一次データが利用できる場合には,R に本来用意されている t.test を使うことができる

使用法

paired.t.test(x, y) # 原データから検定
paired.t.test(mx, my, ux2, uy2, r, n) # 二次データから検定

引数

x, y      一次データから検定を行うときは対応のあるベクトル,
          二次データから検定を行うときは対応のある二つの平均値
ux2, uy2  二次データから検定を行うときは対応のある二つの標準偏差
r         二次データから検定を行うとき,対応のあるデータ間の相関係数
n         二次データから検定を行うとき,データの組数

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/paired_t_test.R", encoding="euc-jp")

# 対応のある平均値の差の検定
paired.t.test <- function(   x, y,                   # 一次データから検定を行うときは対応のあるベクトル,
                                                        # 二次データから検定を行うときは対応のある二つの平均値
                                ux2=NULL, uy2=NULL,     # 二次データから検定を行うときは対応のある二つの標準偏差
                                r=NULL,                 # 二次データから検定を行うとき,対応のあるデータ間の相関係数
                                n=NULL)                 # 二次データから検定を行うとき,データの組数
{
        method <- "対応のある平均値の差の検定"
        if (is.null(ux2)) {                             # 一次データについて検定
                data.name <- paste(deparse(substitute(x)), "and", deparse(substitute(y)))
                OK <- complete.cases(x, y)           # 欠損値を持つケースを除く
                x <- x[OK]
                y <- y[OK]
                n <- length(x)                               # サンプルサイズ
                x <- x-y                             # 差を取って,
                t <- abs(mean(x))/(sd(x)/sqrt(n))    # 検定
        }
        else {                                          # 二次データについて検定
                data.name <- sprintf("\nmean1 = %s, variance1 = %s\nmean2 = %s, variance2 = %s\nr = %s, n = %s",
                                        x, ux2, y, uy2, r, n)
                t <- abs(x-y)/sqrt((ux2+uy2-2*r*sqrt(ux2*uy2))/n)
        }
        df <- n-1                                    # 自由度
        p <- pt(t, df, lower.tail=FALSE)*2           # P 値
        return(structure(list(statistic=c(t=t), parameter=c(df=df), p.value=p,
                method=method, data.name=data.name), class="htest"))
}


使用例

二次データから検定する場合

> x <- c(-1.1, -1.1, -0.5, -3.3, 0.0, -1.1, 1.6, 1.6, -0.7)
> y <- c(-1.5, -0.7, -0.8, -2.7, 0.1, -0.4, 0.5, 0.2, -0.3)

> paired.t.test(mean(x), mean(y), var(x), var(y), cor(x, y), length(x))

	対応のある平均値の差の検定

data:  
mean1 = -0.511111111111111, variance1 = 2.25361111111111
mean2 = -0.622222222222222, variance2 = 0.966944444444444
r = 0.90078402975565, n = 9 
t = 0.445, df = 8, p-value = 0.6681

一次データから検定する場合

> paired.t.test(x, y)

	対応のある平均値の差の検定

data:  x and y 
t = 0.445, df = 8, p-value = 0.6681

・ 対応のある平均値の差の検定


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh