我想估计一个响应的协变量效应,其值取[0,1]中的值。也就是说,响应变量的值存在于0-1(包括)之间。我想使用Papke和Wooldridge(1996)描述的分数logit模型,见下文:
http://faculty.smu.edu/millimet/classes/eco6375/papers/papke%20wooldridge%201996.pdf
是否有R函数(或库)来帮助估计分数logit模型?我可以用某种方式修改glm()
吗?
我很欣赏@Jibler的评论 - 这可以从分数logit模型得到估计的beta值。但是,正如@Ben指出的那样,鉴于此规范,将无法正确估计SE。
我认为这是经济学中更受欢迎的模型,因此STATA期刊撰稿人对此进行了充分讨论: http://fmwww.bc.edu/EC-C/S2013/823/EC823.S2013.nn06.slides.pdf http://www.stata.com/meeting/germany10/germany10_buis.pdf
我能够从Papke和Wooldridge 401k计划示例中获得数据(见下文)。在我看来,至少在分数logit模型中的稳健性是通过方差的三明治估计 - Papke和Wooldridge的方程(9)得到的。也就是说,等式(10)继续说明如何通过将标准vcov
拟合的估计glm(...,family=binomial(link=logit))
矩阵与Pearson残差的估计相乘来获得稳健性。
Buis的幻灯片似乎使用参数vce(robust)实现了小数logit估计器的sandwich()
形式。这些与R中sandwich()
函数的应用完全一致,与标准二项GLM相符。我假设,但我不确定,因为我不是STATA,这与Baum对简单robust
的论证是一样的吗?如果有人拥有STATA并且可以检查这将有所帮助。 family=quasibinomial
GLM给出的模型给出了略微不同的SE估计值。但它似乎也是分数logit模型的均值/方差参数的合理估计。
下面是一些R代码,它复制了上面Buis文章中给出的数据拟合(它还显示了准二项式模型如何给出略微不同的SE估计值):
##
## Replicate what some STATA Journal editors call "fractional logit"
## get data from: "http://fmwww.bc.edu/repec/bocode/k/k401.dta"
##
library(sandwich)
library(foreign)
X <- read.dta("F:/ProportionsDepVar/k401.dta")
class(X)
names(X)
dim(X)
X$totemp1 <- X$totemp/10000
glmfit <- glm(prate ~ mrate + totemp1 + age + sole, family=binomial(link=logit), data=X)
summary(glmfit)
##
## And the SE's are off here and biased large
## Use sandwich estimator instead
##
sand_vcov <- sandwich(glmfit)
sand_se <- sqrt(diag(sand_vcov))
robust_z <- glmfit$coef/sand_se
robust_z
##
## Quasi binomial fit is close to replicating SE's
##
flogit1 <- glm(prate ~ mrate + totemp1 + age + sole, family=quasibinomial(link=logit), data=X)
summary(flogit1)
所以...感谢@Ben提供有用的建议。我的观点是family=quasibinomial
或sandwich
库在估算R中的分数logit模型(由Papke和Wooldridge的等式(9)或(10)定义)中的稳健SE方面做得很好。如果这个结论不正确,请欣赏评论/批评。