(RIM)R中的加权样本

Posted

技术标签:

【中文标题】(RIM)R中的加权样本【英文标题】:(RIM) weighting samples in R 【发布时间】:2019-12-24 00:41:25 【问题描述】:

我有一些调查数据。例如,我使用来自ÌSLRcredit 数据 包。

library(ISLR)

Gender在数据中的分布是这样的

prop.table(table(Credit$Gender))
  Male Female 
0.4825 0.5175 

Student 的分布是这样的。

prop.table(table(Credit$Student))
 No Yes 
0.9 0.1  

假设在人口中,性别的实际分布是​​男性/女性(0.35/0.65),学生的分布是是/否(0.2/0.8)。

在 SPSS 中,可以通过将“总体分布”除以“样本分布”来模拟总体分布,从而对样本进行加权。这个过程称为“RIM 加权”。数据将仅通过交叉表分析(即无回归、t 检验等)。 R中对样本加权的好方法是什么,以便以后通过交叉表分析数据?

可以在 R 中计算 RIM 权重。

install.packages("devtools")
devtools::install_github("ttrodrigz/iterake")


credit_uni = universe(df = Credit,
    category(
        name = "Gender",
        buckets = c(" Male", "Female"),
        targets = c(.35, .65)),
    category(
        name = "Student",
        buckets = c("Yes", "No"),
        targets = c(.2, .8)))

credit_weighted = iterake(Credit, credit_uni)



-- iterake summary -------------------------------------------------------------
 Convergence: Success
  Iterations: 5

Unweighted N: 400.00
 Effective N: 339.58
  Weighted N: 400.00
  Efficiency: 84.9%
        Loss: 0.178

这里是加权数据的 SPSS 输出(交叉表)

                Student     
                No  Yes 
Gender  Male    117 23  140
        Female  203 57  260
                320 80  400

这里来自未加权的数据(我导出了两个文件并在 SPSS 中进行了计算。我通过计算的权重对加权样本进行了加权)。

                Student     
                No  Yes 
Gender   Male   177 16  193
         Female 183 24  20          
                360 40  400

在加权数据集中,我有期望的分布学生:是/否(0.2/0.8)和性别男/女(0.35/0.65)。

这是另一个使用性别和已婚(加权)SPSS的例子

    Married     
                No  Yes 
Gender   Male   57  83  140
         Female 102 158 260
                159 241 400

并且未加权。

                Married 
                No  Yes 
Gender   Male   76  117 193
         Female 79  128 207
                155 245 400

这在 R 中不起作用(即两个交叉表看起来都像未加权的)。

library(expss)

cro(Credit$Gender, Credit$Married)

cro(credit_weighted$Gender, credit_weighted$Married)



 |               |              | Credit$Married |     |
 |               |              |             No | Yes |
 | ------------- | ------------ | -------------- | --- |
 | Credit$Gender |         Male |             76 | 117 |
 |               |       Female |             79 | 128 |
 |               | #Total cases |            155 | 245 |

 |                        |              | credit_weighted$Married |     |
 |                        |              |                      No | Yes |
 | ---------------------- | ------------ | ----------------------- | --- |
 | credit_weighted$Gender |         Male |                      76 | 117 |
 |                        |       Female |                      79 | 128 |
 |                        | #Total cases |                     155 | 245 |

【问题讨论】:

你期待什么结果? 您可能会在Cross Validated 上获得一些运气,尤其是对于基础计算 这个问题是混合的(编码和理论)。它是关于在 R 中可以做什么,而不是关于什么是最好的理论解决方案。所以我认为这是 *** 的一个好问题。 我同意它是一个混合体,并且不认为它在这里是题外话,只是你可能会在那里找到有用的讨论。尤其是如果 R 中没有预定义的函数,那么统计网站可能有助于找出滚动您自己的函数背后的数学原理 @Banjo 如果你运行 compare_margins( df = credit_weighted, weight = weight, Universe = credit_uni, plot = TRUE ) %>% select(-contains("uwgt")) 你确实得到了加权数据(这似乎与您的 SPSS 输出相匹配)。看看它输出的小标题?我不认为它给出了整个交叉表? 【参考方案1】:

使用expss 包,您需要明确提供权重变量。据我了解iterake 将特殊变量weight 添加到数据集:

library(expss)

cro(Credit$Gender, Credit$Married) # unweighted result

cro(credit_weighted$Gender, credit_weighted$Married, weight = credit_weighted$weight) # weighted result

【讨论】:

以上是关于(RIM)R中的加权样本的主要内容,如果未能解决你的问题,请参考以下文章

`python`中的加权高斯核密度估计

将加权边缘列表转换为 r 中的未加权边缘列表

R中的AIC:使用加权数据时手动值与内部值的差异

如何在r中的循环中引导加权平均值

Sklearn k-means聚类(加权),确定每个特征的最佳样本权重?

拓端tecdat|R语言编程指导用线性模型进行臭氧预测: 加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值