Построение уравнения вероятности - PullRequest
0 голосов
/ 10 февраля 2012

Я запустил модель логита и пытаюсь построить кривую вероятности.Я публикую вопрос здесь, а не на доске статистики, потому что это скорее вопрос R, чем статистика, или, по крайней мере, я так думаю.

Моя модель выглядит так:

mod1 = glm(factor(status1) ~ our_bid1 + factor(state) + factor(type),
           data=mydat, family=binomial(link="logit"))
print(summary(mod1))

Status1 - это фактор с двумя уровнями, our_bid колеблется от 0 до 20, состояние - 11 уровней (10 самых популярных и один другой), а тип имеет три уровня.

Чтобы получить прогнозируемыйвероятности, я запустил следующий код

all.x1 <- expand.grid(status1=unique(status1), our_bid1=unique(our_bid1),
                      state=unique(state), type=unique(type))

y.hat.new1 <- predict(mod1, newdata=all.x1, type="response")

Проблема возникает, когда я пытаюсь построить кривую.Я пытаюсь получить общую кривую изменения нашей ставки с учетом модели.

plot(our_bid1<-000:1600, 
     predict(mod1, newdata=data.frame(our_bid1<-c(000:1600)), type="response"),
     lwd=5, col="blue", type="l")

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  variable lengths differ (found for 'factor(state)')
In addition: Warning message:
'newdata' had 1601 rows but variable(s) found have 29532 rows 

Нужно ли указывать все независимые переменные в команде plot?Что я делаю не так?

1 Ответ

3 голосов
/ 10 февраля 2012
  • это не воспроизводимо, было бы немного проще, если бы это было (т.е. приведите нам рабочий пример mydata)
  • вам нужно указать значения всех независимых (я предпочитаю "предиктор") переменных
  • Ваша спецификация путает <- и = (которые не являются вполне взаимозаменяемыми, хотя они находятся в контексте назначения): вы хотите что-то вроде

(мне нужен здесь текст, чтобы SO правильно форматировал код)

bidvec <- 0:1600
plot(bidvec,predict(mod1,
    newdata=data.frame(our_bid1=bidvec,
                       state=ref_state,type=ref_type),
                        type="response"), 
lwd=5, col="blue", type="l")
...