У меня есть фрейм данных с 3 переменными и 50 экземплярами (ID, pre и post). Что-то вроде этого
ID<- c("1","2","3","4","5","6","7","8","9","10")
pre<- c("2.56802","2.6686","1.0145","0.2568","2.369","1.2365","0.6989","0.98745","1.09878","2.454658")
post<-c("3.3323","2.66989","1.565656","2.58989","5.96987","3.12145","1.23565","2.74741","2.54101","0.23568")
dfw1<-data.frame(ID,pre,post)
Столбцы до и после являются средними значениями для другой совокупности. Я хочу провести двусторонний t-тест между первыми элементами как до, так и после. (Предварительно против публикации). Я хочу перебрать все 50 рядов. Я пробовал писать циклы, как показано ниже,
t<-0
for (i in 1:nrow(dfw$ID)) {
t[i]<-t.test(dfw$pre,dfw$post,alternative = c("two.sided"), conf.level = 0.95)
print(t)
}
он вернул ошибку Я хочу извлечь приведенную выше статистику, такую как df, p-value, t-value для каждой строки и так далее. Как мне написать этот код на R?
Это может быть полезно: stackoverflow.com/questions/51920287/…. Вам нужно будет использовать исходный набор данных, а не только средства, поэтому t.test
может вычислить std dev и посмотреть, сколько наблюдений у вас было в каждой группе. Кроме того, я могу видеть до и после публикации, так что, может быть, вам нужно использовать спаренный t.test
?
Stack Overflow - это сайт вопросов и ответов, а не служба написания кода. глянь сюда, чтобы узнать, как писать эффективные вопросы.
Вы вводите числовые значения pre
и post
как символы (кавычки), это вероятный характер возвращаемой ошибки. Кроме того, вы должны вычислять t-ttest не между двумя наблюдениями, а между двумя выборками.
Этот код показывает, что вы не можете отклонить нулевую гипотезу о разнице 0 при обычном уровне достоверности 5%:
ID<- c("1","2","3","4","5","6","7","8","9","10")
pre<- as.numeric(c("2.56802","2.6686","1.0145","0.2568","2.369","1.2365","0.6989","0.98745","1.09878","2.454658"))
post<-as.numeric(c("3.3323","2.66989","1.565656","2.58989","5.96987","3.12145","1.23565","2.74741","2.54101","0.23568"))
dfw1<-data.frame(ID,pre,post)
t.test(dfw1$pre,dfw1$post,alternative = c("two.sided"), conf.level = 0.95, paired=TRUE)
Вывод (дающий вам df, t-stat и p-значение):
Paired t-test
data: dfw1$pre and dfw1$post
t = -2.1608, df = 9, p-value = 0.05899
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.18109315 0.04997355
sample estimates:
mean of the differences
-1.06556
Спасибо за ответ. Я написал этот код row_t_welch (dfw [, c ("pre")], dfw [, c ("post")]) ранее, и это дало мне результат для всего столбца. Мне нужны были результаты для каждой строки данных.
Поскольку точки являются предварительными и опубликованными, я предполагаю, что исходный вопрос может рассматривать это как парный тест на совпадение. Возможно, вы захотите рассмотреть возможность добавления paired = TRUE
в функцию t.test.
@ Dave2e: правильно, адресовано. Shanky: вы имеете в виду, что ваши векторы размещаются в виде строк, а не столбцов? Учтите, что вы не можете, как вы говорите, тестировать различия популяций по точкам. У точки есть среднее значение своего собственного значения и дисперсия, равная 0: т.е. она всегда будет статистически отличаться от другой точки.
@ 000andy8484 - Дэйв. У меня 50 значений в столбце, и мои предварительные значения - это не что иное, как среднее из первых 6 значений, а мой пост - это среднее значение от 6-го до 10-го. Я планирую провести t-тест, чтобы узнать, где есть существенные изменения. Для этого я написал пару циклов и сделал два вектора: один со всеми предварительными значениями, а другой со всеми значениями постов. Я планирую провести t-тест со значениями pre и post.
Что за этим стоит математическое обоснование? Какая разница?