R:如何用权重估计固定效应模型

时间:2014-10-12 12:29:29

标签: r least-squares mixed-models

我想使用OLS和加权数据运行固定效果模型。

由于可能存在一些混淆,我的意思是说我使用过"固定效果"在这里,经济学家通常暗示,即在模型中的一个",或者换句话说,个人特定的影响。我实际拥有的是"多层次"数据,即个人观察,我想控制他们的原始地区(并有相应的聚类标准错误)。

示例数据:

library(multilevel)
data(bhr2000)
weight <- runif(length(bhr2000$GRP),min=1,max=10)
bhr2000 <- data.frame(bhr2000,weight)
head(bhr2000)
  GRP AF06 AF07 AP12 AP17 AP33 AP34 AS14 AS15 AS16 AS17 AS28 HRS RELIG   weight
1   1    2    2    2    4    3    3    3    3    5    5    3  12     2 6.647987
2   1    3    3    3    1    4    3    3    4    3    3    3  11     1 6.851675
3   1    4    4    4    4    3    4    4    4    2    3    4  12     3 8.202567
4   1    3    4    4    4    3    3    3    3    3    3    4   9     3 1.872407
5   1    3    4    4    4    4    4    3    4    2    4    4   9     3 4.526455
6   1    3    3    3    3    4    4    3    3    3    3    4   8     1 8.236978

我想估计的模型是:

AF06_ij = beta_0 + beta_1 AP34_ij + alpha_1 * (GRP == 1) + alpha_2 * (GRP==2) +... + e_ij

其中我指的是具体的个人,j指的是他们所属的群体。

此外,我希望通过weight(抽样权重)加权观察。

但是,我希望得到&#34;聚类标准错误&#34;,以反映可能的GRP特异性异方差性。换句话说,E(e_ij)=0但是Var(e_ij)=sigma_j^2,其中sigma_j对于每个GRP j可以是不同的。

如果我理解正确,nlmelme4只能估计随机效应模型(或所谓的混合模型),而不是内在意义上的固定效应模型。

我尝试了包plm,它看起来非常适合我想做的事情,但它不允许使用权重。还有其他想法吗?

2 个答案:

答案 0 :(得分:2)

我认为这更像是一个堆栈交换问题,但除了模型权重的固定效果之外;你不应该使用OLS作为有序的分类响应变量。这是一种有序的逻辑建模分析类型。所以下面我使用你提供的数据来适应其中一个。

为了清楚起见,我们有一个有序的分类回复&#34; AF06&#34;和两个预测因子。第一个&#34; AP34&#34;也是一个有序的分类变量;第二个&#34; GRP&#34;是你的固定效果。因此,通常你可以通过将相关变量强制转换为RHS上的因子来创建一组固定效果...(我真的试图远离统计理论,因为这不是它的地方。因此,在我所说的一些事情中,我可能不准确。

以下代码使用polr(比例赔率逻辑回归)函数拟合有序逻辑模型。我试图在模型规范方面解释你的目标,但在一天结束时,OLS并不是正确的前进方向。对coefplot的调用将有一个非常拥挤的y轴我只是想提出一个非常基本的开始,你可能会如何解释这一点。我确实试图以更精确的方式将其可视化。回到解释......你将需要努力,但我认为这通常是正确的方法。我能想到的最好的资源是&#34;使用回归和多级/分层模型的数据分析&#34;的第5和第6章;由格尔曼和希尔。这是一个非常好的资源,所以我真的建议你阅读整篇文章并尝试掌握它,如果你对此类分析感兴趣的话。


    library(multilevel) # To get the data
    library(MASS) # To get the polr modeling function
    library(arm) # To get the tools, insight and expertise of Andrew Gelman and his team

    # The data
    weight <- runif(length(bhr2000$GRP),min=1,max=10)
    bhr2000 <- data.frame(bhr2000,weight)
    head(bhr2000)

    # The model
    m <- polr(factor(AF06) ~ AP34 + factor(GRP),weights = weight, data = bhr2000, Hess=TRUE,  method = "logistic")
    summary(m)
    coefplot(m,cex.var=.6) # from the arm package

答案 1 :(得分:0)

查看lfe包---它会执行经济风格的固定效果,您可以指定群集。