使用 srvyr 包的 survey::svymean(~interaction()) 等价物是什么?

What is the equivalent of survey::svymean(~interaction()) using the srvyr package?

我需要一些帮助来分析调查数据。

这是我的代码。 数据准备

library(survey)
library(srvyr)
data(api)

dclus2 <- apiclus1 %>%
  as_survey_design(dnum, weights = pw, fpc = fpc)

这两个代码给了我相同的结果。

一个使用调查包

#Code
survey::svymean(~awards, dclus2)

#Results
             mean    SE
awardsNo  0.28962 0.033
awardsYes 0.71038 0.033

一个使用包 srvyr

#Code
srvyr::dclus2%>%
       group_by(awards)%>%
       summarise(m=survey_mean())

#Results
awards    m            m_se
No     0.2896175    0.0330183       
Yes    0.7103825    0.0330183

我想通过变量“stype”的变量“awards”子集获得调查平均值,级别为“否”和“是”。

在调查包中,使用了交互 例如svymean(~interaction(awards,stype), dclus2) 我如何使用 srvyr 包获得相同的结果?

感谢您的帮助

如何使用包 srvyr 得到下面的结果?

#Code
svymean(~interaction(awards,stype), dclus2)

#Results
                                    mean     SE
interaction(awards, stype)No.E  0.180328 0.0250
interaction(awards, stype)Yes.E 0.606557 0.0428
interaction(awards, stype)No.H  0.043716 0.0179
interaction(awards, stype)Yes.H 0.032787 0.0168
interaction(awards, stype)No.M  0.065574 0.0230
interaction(awards, stype)Yes.M 0.071038 0.0203

您可以简单地模仿 survey 的推荐行为:通过连接每个组件变量的不同值创建一个新变量。这就是 interaction() 函数为 svymean().

所做的全部
library(survey)
library(srvyr)

data(api)

# Set up design object
dclus2 <- apiclus1 %>%
  as_survey_design(dnum, weights = pw, fpc = fpc)

# Create 'interaction' variable
dclus2 %>%
  mutate(awards_stype = paste(awards, stype, sep = " - ")) %>%
  group_by(awards_stype) %>%
  summarize(
    prop = survey_mean()
  )
#> # A tibble: 6 x 3
#>   awards_stype   prop prop_se
#>   <chr>         <dbl>   <dbl>
#> 1 No - E       0.180   0.0250
#> 2 No - H       0.0437  0.0179
#> 3 No - M       0.0656  0.0230
#> 4 Yes - E      0.607   0.0428
#> 5 Yes - H      0.0328  0.0168
#> 6 Yes - M      0.0710  0.0203

要将各种分量变量拆分回单独的列,您可以使用 tidyr 包中的 separate() 函数。

# Separate the columns afterwards
dclus2 %>%
  mutate(awards_stype = paste(awards, stype, sep = " - ")) %>%
  group_by(awards_stype) %>%
  summarize(
    prop = survey_mean()
  ) %>%
  tidyr::separate(col = "awards_stype",
                  into = c("awards", "stype"),
                  sep = " - ")
#> # A tibble: 6 x 4
#>   awards stype   prop prop_se
#>   <chr>  <chr>  <dbl>   <dbl>
#> 1 No     E     0.180   0.0250
#> 2 No     H     0.0437  0.0179
#> 3 No     M     0.0656  0.0230
#> 4 Yes    E     0.607   0.0428
#> 5 Yes    H     0.0328  0.0168
#> 6 Yes    M     0.0710  0.0203

reprex package (v1.0.0)

于 2021-03-30 创建