首页 文章

使用R中的权重来考虑抽样概率的倒数[重复]

提问于
浏览
0

这个问题在这里已有答案:

这类似但不等于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")))

我需要做的另一件事是运行回归,记住以下列方式进行整群抽样:人口按区域划分 . 这就产生了一个问题:在
foo+bar
中接受访谈的一个人代表
foo+bar
人,而在
foo+bar
中接受访谈的个人代表
foo+bar
,但
foo+bar

foo+bar
与每个地区的总人口不成比例,因此某些地区的人数过多,而其他地区的人数不足 . 为了考虑到这一点,每个观测值应该通过其采样概率的倒数来加权 .

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

在Stata中,可以通过执行 reg y x1 x2 [pweight=n] 来运行回归,并且考虑到采样概率的倒数来计算正确的方差 - 协方差矩阵 . 当时我必须使用Stata来完成我的部分工作而将R用于其他部分 . 我想只使用R.

1 回答

  • 3

    你可以通过重复rownames来做到这一点:

    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 指的是要保留的列 . 如果您将该位留空,则将返回所有内容 .

相关问题