2013-03-20 3 views
-1

Мне нужна помощь в выполнении t-теста. Я знаю, как это сделать для одного набора данных, но мне нужна помощь, чтобы сделать 2 образца t-теста. Я один набор данных называется data1:Выполнение T.test в программировании R

+3

Просьба сделать вашу ситуацию воспроизводимой, то есть предоставить нам данные и код, необходимые для имитации вашей ситуации. См. Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example, чтобы узнать больше о том, как это сделать. –

+0

@PaulHiemstra у вас есть этот комментарий к копированию/вставке ?! Я теряю счет количества ссылок на этот вопрос! –

+2

У меня есть это как примечание на моей панели управления MacOS. Но предполагается, что это приложение Stack, которое позволяет вам сохранить ряд стандартных комментариев. Это, наверное, еще лучше. –

ответ

6

Данные:

data1 <- data.frame(n = 15, mean = 14, sd = 8) 
data2 <- data.frame(n = c(17, 5, 8), mean = c(19, 17, 11), sd = c(7, 6, 9)) 

Функция Т-тест (на основе количества наблюдений, средних значений и стандартных отклонений):

T.test <- function(n, mean, sd) { 
    s <- sum((n - 1) * sd^2)/(sum(n) - 2) # weighted variance 
    t <- sqrt(prod(n)/sum(n)) * (diff(mean)/sqrt(s)) # t statistic 
    df <- sum(n) - 2 # degrees of freedom 
    p <- (1 - pt(abs(t), df)) * 2 # p value 
    c(t = t, p = p) 
} 

Применить функция для всех рядов data2:

apply(data2, 1, function(x) T.test(c(x[1], data1$n), 
            c(x[2], data1$mean), 
            c(x[3], data1$sd))) 

Выходные данные показывают, Т- и р-значения для LL строки в data2:

  [,1]  [,2]  [,3] 
t -1.98618371 -0.8215838 0.8730255 
p 0.05621594 0.4220631 0.3925227 
1

Существует также встроенная функция в R

?t.test 

Описание выполняет один и два образца Т-тесты на векторов данных.

#just an easy example 
a = c(12.9, 13.5, 12.8, 15.6, 17.2, 19.2, 12.6, 15.3, 14.4, 11.3) 
b = c(12.7, 13.6, 12.0, 15.2, 16.8, 20.0, 12.0, 15.9, 16.0, 11.1) 

t.test(a,b, paired=TRUE) 

Paired t-test 

data: a and b 
t = -0.2133, df = 9, p-value = 0.8358 
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval: 
-0.5802549 0.4802549 
sample estimates: 
mean of the differences 
-0.05 
+0

Встроенная функция 't.test' нуждается в необработанных данных, но OP имеет значения, SD и n. –

+0

@SvenHohenstein спасибо за уточнение, моя ошибка –

+0

К сожалению, это не работает для меня, поскольку я сравниваю значения с разными значениями n –