2016-02-12 2 views
0

Я хотел бы вычислить стандартные ошибки кластеризации для модели с отрицательным биномиальным отрицательным числом. По умолчанию zeroinfl (от pscl пакета) возвращают стандартные ошибки, полученные с использованием матрицы Гесса, возвращенное optim, например:Clustered Стандартная ошибка для нуль-надутой отрицательной биномиальной модели

library(pscl) 
data("bioChemists", package = "pscl") 
dim(bioChemists) 
head(bioChemists) 
## default start values 
fm1 <- zeroinfl(art ~ ., data = bioChemists, dist = "negbin")) 
summary(fm1) 

Есть ли способ использовать асимметричную/симметричную матрицу расстояний между наблюдениями или использовать один из переменные (например, kid5 в наборе игрушек), чтобы вычислить стандартную ошибку кластеров?

Я нашел this от an answer at stackexchange, но я не уверен, как это можно использовать с ноль-раздутыми моделями. Эквивалент в Stata rzinb, вероятно, будет cluster clustvar под vce: http://www.stata.com/manuals13/rzinb.pdf.

Любые идеи?

ответ

3

Версия для разработки пакета sandwich на R-Forge была расширена, чтобы обеспечить объектно-ориентированное вычисление кластеризованных ковариаций. Это также поддерживает модели с реверсированием с нулевым раздувом. Вы можете установить версию devel из R-Forge через:

install.packages("sandwich", repos = "http://R-Forge.R-project.org") 

А затем загрузить все необходимые пакеты. Пакет lmtest используются для функции coeftest(), в котором оценка ковариационной матрицы может быть подключена к сети.

library("pscl") 
library("sandwich") 
library("lmtest") 

модель иллюстрации вы использовали следующий.

data("bioChemists", package = "pscl") 
fm1 <- zeroinfl(art ~ ., data = bioChemists, dist = "negbin") 

coeftest() функция по умолчанию возвращает те же самые маргинальные тесты Wald как summary().

coeftest(fm1) 
## t test of coefficients: 
## 
##      Estimate Std. Error t value Pr(>|t|)  
## count_(Intercept) 0.41674653 0.14359655 2.9022 0.003796 ** 
## count_femWomen -0.19550683 0.07559256 -2.5863 0.009856 ** 
## count_marMarried 0.09758263 0.08445195 1.1555 0.248199  
## count_kid5  -0.15173246 0.05420606 -2.7992 0.005233 ** 
## count_phd   -0.00070013 0.03626966 -0.0193 0.984603  
## count_ment   0.02478620 0.00349267 7.0966 2.587e-12 *** 
## zero_(Intercept) -0.19168829 1.32281889 -0.1449 0.884815  
## zero_femWomen  0.63593320 0.84891762 0.7491 0.453986  
## zero_marMarried -1.49946849 0.93867060 -1.5974 0.110518  
## zero_kid5   0.62842720 0.44278263 1.4193 0.156166  
## zero_phd   -0.03771474 0.30800817 -0.1224 0.902572  
## zero_ment   -0.88229322 0.31622813 -2.7901 0.005381 ** 
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Это может быть легко расширен, чтобы использовать оценку кластерной ковариационной матрицы с помощью функции vcovCL(). Здесь переменная kid5 используется, как вы предложили. (Обратите внимание, что если кто-то еще читает это: использование kid5 - это просто показать, что «работает», но на самом деле не имеет смысла в этом приложении.)

coeftest(fm1, vcov = vcovCL(fm1, cluster = bioChemists$kid5)) 
## t test of coefficients: 
## 
##      Estimate Std. Error t value Pr(>|t|)  
## count_(Intercept) 0.41674653 0.17009748 2.4500 0.01447 * 
## count_femWomen -0.19550683 0.01701325 -11.4914 < 2.2e-16 *** 
## count_marMarried 0.09758263 0.02401883 4.0628 5.272e-05 *** 
## count_kid5  -0.15173246 0.03612916 -4.1997 2.938e-05 *** 
## count_phd   -0.00070013 0.04852615 -0.0144 0.98849  
## count_ment   0.02478620 0.00263208 9.4170 < 2.2e-16 *** 
## zero_(Intercept) -0.19168829 0.51865043 -0.3696 0.71177  
## zero_femWomen  0.63593320 0.87775846 0.7245 0.46895  
## zero_marMarried -1.49946849 1.03481783 -1.4490 0.14768  
## zero_kid5   0.62842720 0.35073624 1.7917 0.07351 . 
## zero_phd   -0.03771474 0.13873870 -0.2718 0.78581  
## zero_ment   -0.88229322 0.07481264 -11.7934 < 2.2e-16 *** 
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
Смежные вопросы