R 제로 팽창 카운트 데이터 회귀에서 표준 오류를 얻는 방법은 무엇입니까? [닫은]


9

다음 코드

PredictNew <- predict (glm.fit, newdata = Predict, X1 =X1, Y1= Y1, 
                       type = "response", se.fit = TRUE)

3 열 data.frame--PredictNew, 적합치, 표준 오차 및 잔차 척도 항을 생성합니다.

완벽 ... 그러나 zeroinfl {pscl}다음이 장착 된 모델 사용 :

PredictNew <- predict (zeroinfl.fit, newdata = Predict, X1 =X1, Y1= Y1, 
                       type = "response", se.fit = TRUE)

또는

PredictNew <- predict (zeroinfl.fit, newdata = Predict, X1 =X1, Y1= Y1, 
                       type = "response", se.fit = TRUE, MC = 2500, conf = .95))

적합치의 단일 열 벡터 만 생성합니다. 그러나 표준 오류가 있기를 바랍니다. 내가 읽은 모든 것은 그들이 생산되어야한다고 말합니다 ..

(코드는 실제로 네 개의 변수가 다소 단순화 된 오프셋 없습니다 - 아무런 probs predict.glmse.fit = TRUE. 생산 SE들)을


5
R-Help 에서이 스레드를 살펴보십시오. stat.ethz.ch/pipermail/r-help/2008-December/thread.html#182806 (특히 Achim Zeileis의 메시지는 내가 생각하는 것을 수행하는 코드를 제공합니다) 시도하고 있습니다). 현재로서는 표준 오류가 predict()함수에 구현 된 것처럼 보이지 않습니다 zeroinfl().
smillig 2016 년

고마워, 그 코드는 꽤 합리적인 결과를 산출하는 것처럼 보였다. 다른 사람들은 예측 간격을 추출하기 위해 se.fit = TRUE에 대한 새로운 zeroinfl.predict 함수의 predict () 매개 변수가 se = TRUE로 변경되었음을 주목해야합니다.
KalahariKev

답변:


4

내 지식으로는, predict결과 의 방법 zeroinfl에는 표준 오류가 포함 되어 있지 않습니다. 신뢰 구간을 구성하는 것이 목표라면 부트 스트랩을 사용하는 것이 좋습니다. 부트 스트래핑이 더 강력해질 가능성이 있기 때문에 매력적이라고 ​​말합니다.

다음은 원하는 것을 수행하는 대략적인 코드입니다. 정확하게 작동하지는 않지만 필요한 수정을 할 수 있기를 바랍니다.

## load boot package
require(boot)
## output coefficients from your original model
## these can be used as starting values for your bootstrap model
## to help speed up convergence and the bootstrap
dput(round(coef(zeroinfl.fit, "count"), 3))
dput(round(coef(zeroinfl.fit, "zero"), 3))

## function to pass to the boot function to fit your model
## needs to take data, an index (as the second argument!) and your new data
f <- function(data, i, newdata) {
  require(pscl)
  m <- zeroinfl(count ~ child + camper | persons, data = data[i, ], start = list(count = c(1.598, -1.0428, 0.834), zero = c(1.297, -0.564)))
  mparams <- as.vector(t(do.call(rbind, coef(summary(m)))[, 1:2]))
  yhat <- predict(m, newdata, type = "response")
  return(c(mparams, yhat))    
}

## set the seed and do the bootstrap, make sure to set your number of cpus
## note this requires a fairly recent version of R
set.seed(10)
res <- boot(dat, f, R = 1200, newdata = Predict, parallel = "snow", ncpus = 4)

## get the bootstrapped percentile CIs
## the 10 here is because in my initial example, there were 10 parameters before predicted values
yhat <- t(sapply(10 + (1:nrow(Predict)), function(i) {
  out <- boot.ci(res, index = i, type = c("perc"))
  with(out, c(Est = t0, pLL = percent[4], pUL = percent[5]))
}))

## merge CIs with predicted values
Predict<- cbind(Predict, yhat)

내가 가진 제로 팽창 포아송 회귀 분석에서 내가 쓴 두 페이지, 하나 개의 부트 스트랩 매개 변수에서이 코드를 끌었다 zeroinfl 제로 팽창 포아송 및 제로립니다 음 이항 모델에서 예측 된 값에 대한 신뢰 구간을 부트 스트랩하는 방법을 하나의 시연 음 이항을 제로립니다 . 희망적으로 결합하면 0으로 부풀린 포아송에서 예측 된 값으로 작업하기에 충분한 예를 제공합니다. 당신은 또한 몇 가지 그래프 아이디어를 얻을 수 있습니다 :)


VGAM 패키지에서 자르지 않은 음수 이항 모델에 맞게 코드를 수정하려고했지만 오류가 발생했습니다. 이력서에 대해 새 질문을 작성하고 여기에 링크해야합니까? 도와 주셔서 감사합니다. 특히, 이것은 내가 얻는 오류 Error in X.vlm.save %*% coefstart : non-conformable arguments입니다.
Raphael K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.