相关疑难解决方法(0)

R中的分数logit模型

我想估计一个响应的协变量效应,其值取[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的幻灯片似乎sandwich()使用参数vce(robust)实现了小数logit估计器的一种形式.这些与sandwich()R 中的函数的应用完全一致,与标准二项式GLM一致.我假设,但我不确定,因为我不是STATA,这与Baum的论点一样简单robust吗?如果有人拥有STATA并且可以检查这将有所帮助.family=quasibinomialGLM给出的模型给出了略微不同的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 …
Run Code Online (Sandbox Code Playgroud)

r economics glm

34
推荐指数
0
解决办法
6485
查看次数

用于概率和logit回归的R中的鲁棒和聚类标准误差

最初,我主要想在R中运行带有聚类标准错误的probit/logit模型,这在Stata中非常直观.我在这里得到了答案Logistic回归与R中强大的聚类标准错误.因此,我尝试将Stata和R两者的结果与强大的标准误差和聚类标准误差进行比较.但我注意到软件中两个标准错误的输出并不完全相同.但是,如果我使用此处建议的方法https://diffuseprior.wordpress.com/2012/06/15/standard-robust-and-clustered-standard-errors-computed-in-r/.我可以从R和Stata获得线性回归的确切输出.因此,我担心我在R中编写的代码是不正确的,如果我想运行probit模型而不是logit模型,那么使用什么命令.或者如果有任何优雅的替代方案来解决这个问题?谢谢.

R代码

## 1. linear regression
library(rms) 
# model<-lm(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width,iris)
summary(model)
fit=ols(Sepal.Length~Sepal.Width+Petal.Length+Petal.Width, x=T, y=T, data=iris)
fit
robcov(fit) #robust standard error
robcov(fit, cluster=iris$Species) #clustered standard error


## 2. logistic regression
##demo data generation   
set.seed(1234)
subj<-rep(1:20,each=4)
con1<-rep(c(1,0),40)
con2<-rep(c(1,1,0,0),20) 
effect<-rbinom(80,1,0.34)
data<-data.frame(subj,con1,con2,effect)
library(foreign);write.dta(data,'demo_data.dta')

library(rms)
fit=lrm(effect ~ con1 + con2, x=T, y=T, data=data)
fit
robcov(fit)  ##robust standard error
robcov(fit, cluster=data$subj) ## clustered standard error
Run Code Online (Sandbox Code Playgroud)

Stata代码

## 1. linear regression
webuse iris
reg seplen sepwid petlen petwid
reg seplen sepwid petlen petwid,r
reg …
Run Code Online (Sandbox Code Playgroud)

r

7
推荐指数
1
解决办法
3708
查看次数

标签 统计

r ×2

economics ×1

glm ×1