R предсказывает, что не дает правильную длину - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть простой положительный / отрицательный результат теста в зависимости от концентрации белка, и я пытаюсь построить кривую регрессии lo git. Тем не менее, я постоянно получаю ошибку, которую не могу исправить.

Это мои данные:

sp <- structure(list(Cry = c(32, 32, 32, 32, 32, 32, 16, 16, 16, 8, 
8, 8, 4, 4, 4, 2, 2, 2, 1, 1, 1, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 
0.12, 0.12, 0.06, 0, 0, 0, 0, 0, 0), Positive = c(1L, 1L, 1L, 
1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L)), class = "data.frame", row.names = c(NA, -36L))

Это мой glm:

test.glm <- glm(Positive ~ Cry, family = binomial, data = sp)
summary(test.glm)

Я пытаюсь создать прогнозные значения для построения

x_test <- seq(0,32, 0.01)
y_test <- predict(test.glm, newdata =  list(x_test) ,type = "response")

Итак, когда я пытаюсь построить это:

plot(sp$Positive ~ log(Cry))
lines(x_test, y_test)

Я получаю эту ошибку:

Ошибка в xy.coords (x, y): 'x' и ' длины y отличаются

, потому что

length(x_test)
3201
length(y_test)
36

Длина y_test заканчивается 36 вместо той же длины, что и x_test

Почему моя функция прогнозирования игнорирует длина моих новых данных и прогнозирование только тех значений, которые у меня есть в исходном кадре данных?

1 Ответ

3 голосов
/ 08 апреля 2020

Возможно, это то, что вы искали?

test.glm <- glm(Positive ~ Cry, family = binomial, data = sp)
x_test <- seq(0,32,0.01)
y_text <- predict(test.glm,newdata = data.frame(Cry = x_test),type="response")
plot(sp, Positive ~ log(Cry))
lines(x_test,y_test)

enter image description here

Данные

sp <- structure(list(Cry = c(32, 32, 32, 32, 32, 32, 16, 16, 16, 8, 
8, 8, 4, 4, 4, 2, 2, 2, 1, 1, 1, 0.5, 0.5, 0.5, 0.25, 0.25, 0.25, 
0.12, 0.12, 0.06, 0, 0, 0, 0, 0, 0), Positive = c(1L, 1L, 1L, 
1L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L)), class = "data.frame", row.names = c(NA, -36L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...