如何为依赖样本编写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检验的正确解决方案。
答案 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