R函数用于依赖样本t检验?

时间:2015-04-30 19:25:01

标签: r statistics

如何为依赖样本编写R函数t test?不使用现有函数(如t.test())?

ttest <- function(x,y) {
 n1<- length(y)       #y length
 n2<- length(x)       #x length
 somay <- sum(y)
 somax <- sum(x)
 y1 <- (somay)/n1       #y mean
 y2<- (somax)/n2        #x mean
 dadosy <- na.omit(y)
 dadosx <- na.omit(x)
 disvquad1 <- (dadosy-y1)^2
 disvquad2 <- (dadosx-y2)^2
 s12<- (1/(n1-1))*sum(disvquad1)    #variance of y
 s22<- (1/(n2-1))*sum(disvquad2)    #variance of x
 s2 <- ((n1-1)*s12+(n2-1)*s22)/((n1-1)+(n2-1))
 s<- (s2)^(1/2)
 t<- (y1-y2)/(sqrt(1/n1+1/n2)*s)     #test statistic 
 return(t)
}

ttest(x,y)

这是依赖样本t检验的正确解决方案。

1 个答案:

答案 0 :(得分:0)

根据this tutorial,配对t检验只不过是测试两个向量的差异(或偏差)。

以下是快速试用版。它开始在两个向量(complete.cases())之间选择完整的情况。然后获得平均值,标准偏差和标准误差。最后计算t-静态和p-值 - 请注意,默认值(mu = 0)的平均差值为0,假设备选假设是双边的。

ttest <- function(x, y, mu = 0, ...) {
    # keep only non-NULL
    complete <- complete.cases(x, y)
    x <- x[complete]
    y <- y[complete]
    # build statistic
    d <- y - x
    d.mu <- mean(d)
    d.se <- sd(d) / sqrt(length(x)) # standard error
    t <- (d.mu - mu) / d.se
    # returns t statistic and p value, assumes two sided
    c(t_value = t, p_value = pt(t, df = length(x)-1))
}

set.seed(1237)
ttest(rnorm(10),rnorm(10))
#   t_value   p_value 
# 0.9163995 0.8083221