【问题标题】:Using weights in R to consider the inverse of sampling probability [duplicate]在R中使用权重来考虑采样概率的倒数
【发布时间】:2016-06-13 19:50:31
【问题描述】:

这类似于但不等于Using weights in R to consider the inverse of sampling probability

我有一个很长的数据框,这是真实数据的一部分:

age gender labour_situation industry_code FACT FACT_2....
35  M      unemployed       15            1510
21  F      inactive         00            651

FACT 是一个变量,对于第一行,35 岁的男性失业者代表人口中的 1510 人。

我需要获取一些表格来显示相关信息,例如就业人数和失业人数的百分比等。在 Stata 中有一些选项,如 tab labour_situation [w=FACT] 显示人口中就业人数和失业人数,而 tab labour_situation显示样本中的就业人数和失业人数。

部分解决方案可能是将数据框的第一行重复 1510 次,然后将我的数据框的第二行重复 651 次?正如我搜索的一个选项是运行

longdata <- data[rep(1:nrow(data), data$FACT), ]
employment_table = with(longdata, addmargins(table(labour_situation, useNA = "ifany")))

我需要做的另一件事是运行回归,同时记住以以下方式进行集群抽样:人口按区域划分。这就产生了一个问题:一个人 在 接受采访的人代表 人,而在 接受采访的个人代表 人,但 和 与每个地区的总人口不成比例,因此某些地区的人数会偏多,其他地区的代表性不足。为了考虑到这一点,每个观测值都应按其被采样概率的倒数加权。

最后一段意味着模型 可以用有效方程估计 但是如果我考虑方差-协方差矩阵不会是 而是 采样概率的倒数。

在 Stata 中,可以通过 reg y x1 x2 [pweight=n] 运行回归,并考虑采样概率的倒数计算正确的方差-协方差矩阵。当时我不得不在我的某些工作中使用 Stata,而在其他工作中使用 R。我只想使用 R。

【问题讨论】:

  • 试试DF[rep(1:nrow(DF), DF$FACT), ]
  • 最后一条评论可能会激怒所有人,Stata 用户因为挖了 Stata 而 R 用户因为你暗示 R 不能做某事。对每个人来说更严重的是,我不清楚任何答案如何详细说明他们的解决方案如何适用于非整数,但我不是 R 专家。

标签: r dataframe regression stata


【解决方案1】:

您可以通过重复行名来做到这一点:

df1 <- df[rep(row.names(df), df$FACT), 1:5]

> head(df1)
    age gender labour_situation industry_code FACT
1    35      M       unemployed            15 1510
1.1  35      M       unemployed            15 1510
1.2  35      M       unemployed            15 1510
1.3  35      M       unemployed            15 1510
1.4  35      M       unemployed            15 1510
1.5  35      M       unemployed            15 1510
> tail(df1)
      age gender labour_situation industry_code FACT
2.781  21      F         inactive             0  787
2.782  21      F         inactive             0  787
2.783  21      F         inactive             0  787
2.784  21      F         inactive             0  787
2.785  21      F         inactive             0  787
2.786  21      F         inactive             0  787

这里的1:5 指的是要保留的列。如果您将该位留空,则将全部返回。

【讨论】:

  • 慢回复:是的,这是一个部分解决方案,解决了我在有时间时提出的问题的重要部分,也许我会在一个类似 Stata 的包中工作跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2017-11-05
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
相关资源
最近更新 更多