2014-02-14 3 views
0

Я пытаюсь построить предсказание моей модели препятствий.

Модель:

mm14C<-hurdle(littersize1~X1+mont|mont,dist = "poisson", zero = "bin", data=data,weights=w) 

Предсказать функция прекрасно работает для прогнозирования значений:

stripchart(data$X1~data$littersize1,ylab="Litter size",font.lab = 1, family = "serif", cex.lab = 1.5, method="jitter",xlim=c(-1.9,1),col="grey", xlab="Connectivity to Males",jitter=0.3, pch=18) 
xk<-seq(from=-2, to=2, length=1000) 
x2<-seq(from=1, to=12, length=1000) 
my.data<-data.frame(X1=xk, mont=x2) 
pred.vals<-predict(mm14C, newdata=my.data,weights = w, type="response") 
lines(pred.vals~xk,lty=1, col="black 

Однако это дает ошибку для предсказания ошибки SE

G<-predict(mm14C, newdata=my.data, se.fit=TRUE,weights = w, type="response") 
f<-G$fit 
fseup<-(G$fit +1.96*G$se.fit) 
fselow<-(G$fit-1.96*G$se.fit) 
lines(fseup~xk-1,lty=3, col="green") 
lines(fselow~xk,lty=3, col="green") 

: Ошибка в G $ fit: оператор $ недействителен для атомных векторов У меня есть trie d оставив только одну переменную (X1) в модели и выполнив только скачок Пуассона, чтобы проверить, была ли проблема моделью. Но у меня всегда была такая же ошибка.

Любые предложения будут высоко оценены.

Заранее благодарен!

+1

Если вы используете пакет pscl, чем (судя по [документации] (http://cran.r-project.org/web/packages/pscl/pscl.pdf)) Я не думаю, что 'predict.hurdle' может возвращать стандартные ошибки. Нет аргумента 'se.fit'. – Roland

ответ

0

Предполагая, что вы используете hurdle() из pscl пакета , то нет se.fit аргумента для метода predict.hurdle():

## S3 method for class 'hurdle' 
predict(object, newdata, 
    type = c("response", "prob", "count", "zero"), na.action = na.pass, 
    at = NULL, ...) 

В качестве такой функции просто возвращает вектор прогнозируемых значений. Если вам нужны стандартные ошибки для прогнозируемых значений, вам нужно будет работать с предсказаниями по шкале функции ссылок, вычислить стандартные ошибки там (делать по predict.glm(), но помните, что у вас есть вклады от двух частей модели !!) а затем применить обратную функцию связи, чтобы все преобразовать обратно в шкалу ответа. Это не звучит тривиально ...

+0

Спасибо Гэвин. Я попробовал нормальное предсказать, выполнив функцию expect.glm(), и он отлично работает. Теперь я должен вынести биномиальный вклад, как вы сказали, что непросто. Спасибо за помощь! – YMC

 Смежные вопросы

  • Нет связанных вопросов^_^