#r
Вопрос:
Я пытаюсь использовать t-тест только с двумя значениями:
1
и. n
Это работает:
a <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97, 8.97)
или
a <- rep(c(1, 8.97), each = 15)
и:
t.test(x = a, mu = 2.33, alternative = "greater")
One Sample t-test
data: a
t = 3.5879, df = 29, p-value = 0.0006046
alternative hypothesis: true mean is greater than 2.33
95 percent confidence interval:
3.727653 Inf
sample estimates:
mean of x
4.985
Верно, но:
variavel <- seq(from = 1, to = 9, by = .01)
df <- data.frame(fix1 = 1, fix2 = 1, fix3 = 1, fix4 = 1, fix5 = 1, fix6 = 1, fix7 = 1, fix8 = 1, fix9 = 1, fix10 = 1, fix11 = 1, fix12 = 1, fix13 = 1, fix14 = 1, fix15 = 1,
ge1 = variavel, ge2 = variavel, ge3 = variavel, ge4 = variavel, ge5 = variavel, ge6 = variavel, ge7 = variavel, ge8 = variavel, ge9 = variavel, ge10 = variavel, ge11 = variavel, ge12 = variavel, ge13 = variavel, ge14 = variavel, ge15 = variavel
)
Когда я перейду к расчету теста для каждой строки и получу p-value
,
apply(X = df, MARGIN = 1, FUN = function(x) {
t.test(x = x, mu = 2.33, alternative = "greater")$p.value
})
это дает мне ошибку:
Ошибка в t.тест.по умолчанию(x = x, mu = 2,33) : данные по существу постоянны
Что происходит?
Ответ №1:
Ваша первая строка инвариантна, и поскольку это ошибка, остальные данные никогда не проверяются.
table(unlist(df[1,]))
# 1
# 30
У вас есть два варианта:
- Опустите строку 1 в своих расчетах:
head(apply(X = df[-1,], MARGIN = 1, FUN = function(x) { t.test(x = x, mu = 2.33, alternative = "greater")$p.value })) # 2 3 4 5 6 7 # 1 1 1 1 1 1
- Поймай его внутри петли:
head(apply(X = df, MARGIN = 1, FUN = function(x) { tryCatch(t.test(x = x, mu = 2.33, alternative = "greater")$p.value, error = function(e) NA_real_) })) # [1] NA 1 1 1 1 1