【问题标题】:survey package in R: How to set fpc argument (finite population correction)R中的调查包:如何设置fpc参数(有限人口校正)
【发布时间】:2020-10-06 00:19:20
【问题描述】:

我已经使用与大小成比例的概率 (PPS) 计划从抽样框架中抽取了一些数据,因此我对 6 层级的两个变量进行了抽样:genderpre 的比例:

      pre
gender  High   Low Medium
     F 0.155 0.155  0.195
     M 0.155 0.155  0.185

现在我想使用 R 包 "survey" 中的 svydesign 指定我的采样数据的设计。我想知道如何定义fpc有限人口校正)参数?

文档说:

对于不带替换的 PPS 抽样,需要使用 fpc 参数指定每个抽样阶段的概率,并且不应给出总体权重参数。

library(survey)

out <- read.csv('https://raw.githubusercontent.com/rnorouzian/d/master/out.csv')

dstrat <- svydesign(id=~1,strata=~gender+pre, data=out, pps = "brewer", fpc = ????)

【问题讨论】:

  • 从示例中,它是在数据集中创建的列。可能您需要通过获取行数的百分比来进行分组操作
  • 基于this 也许你不需要那个论点
  • @akrun,我给包作者发了电子邮件,他说:“您希望 fpc = 变量成为该观察的抽样概率(即观察所在的层)” 。因此,我们需要根据我在问题中显示的比例为fpc 添加一列。我们可以使用tidyversefpc 添加一列到out 吗?
  • 你可以用out %&gt;% group_by(gender, pre) %&gt;% mutate(fpc = ..)来做这个我不知道这里的计算
  • @akrun,没有计算。 fpc 用于观察Highpre 变量和Fgender 的行是.155 (查看上面的比例表:)

标签: r random statistics sampling survey


【解决方案1】:

如果我们想添加比例列,那么我们按'gender'、'pre'分组,通过将计数除以计数的sumleft_join来创建百分比

out1 <-  out %>%
           group_by(gender, pre) %>% 
           summarise(n = n(), .groups = 'drop') %>%
           mutate(fpc = n/sum(n)) %>% 
           right_join(out)

或者使用来自janitoradorn_percentages

library(janitor)
library(tidyr)
out1 <- out %>% 
         tabyl(gender, pre) %>% 
         adorn_percentages(denominator = "all") %>% 
         pivot_longer(cols = -gender, names_to = 'pre', 
             values_to = 'fpc') %>%
        right_join(out)

如果我们需要一个函数

f1 <- function(dat, grp_cols) {
          dat %>%
             group_by(across(all_of(grp_cols))) %>%
              summarise(n = n(), .groups = 'drop') %>%
              mutate(fpc = n/sum(n)) %>% 
              right_join(dat)
  }



f1(out, c("gender", "pre"))
#Joining, by = c("gender", "pre")
# A tibble: 200 x 11
#   gender pre       n   fpc   no. fake.name sector   pretest state email            phone      
#   <chr>  <chr> <int> <dbl> <int> <chr>     <chr>      <int> <chr> <chr>            <chr>      
# 1 F      High     31 0.155     1 Pont      Private     1352 NY    Pont@...com      xxx-xx-6216
# 2 F      High     31 0.155     2 Street    NGO         1438 CA    Street@...com    xxx-xx-6405
# 3 F      High     31 0.155     3 Galvan    Private     1389 NY    Galvan@...com    xxx-xx-9195
# 4 F      High     31 0.155     4 Gorman    NGO         1375 CA    Gorman@...com    xxx-xx-1845
# 5 F      High     31 0.155     5 Jacinto   Private     1386 CA    Jacinto@...com   xxx-xx-6237
# 6 F      High     31 0.155     6 Shah      Public      1384 CA    Shah@...com      xxx-xx-5723
# 7 F      High     31 0.155     7 Randon    Private     1360 TX    Randon@...com    xxx-xx-7542
# 8 F      High     31 0.155     8 Koucherik NGO         1439 NY    Koucherik@...com xxx-xx-9137
# 9 F      High     31 0.155     9 Waters    Industry    1414 TX    Waters@...com    xxx-xx-7560
#10 F      High     31 0.155    10 David     Industry    1396 CA    David@...com     xxx-xx-6498
# … with 190 more rows

【讨论】:

  • 阿伦,我想我需要this question 上的答案。谢谢。
  • 我想我现在明白了:0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2011-07-28
  • 1970-01-01
相关资源
最近更新 更多