【问题标题】:How to plot weighted survey data and export weighted data from R to SPSS?如何绘制加权调查数据并将加权数据从 R 导出到 SPSS?
【发布时间】:2020-06-15 18:51:47
【问题描述】:

我有一个名为weight 的加权变量的调查数据,我想在我的数据集上使用它。不幸的是,survey 包并没有像我想的那样工作。我最终需要的是

  1. 绘制考虑权重但保持因子水平(在 x 轴上)的(条形)图(在 y 轴上显示分布百分比)。
  2. 以某种方式将加权数据集导出到 SPSS。

有什么办法可以做到吗?即使使用 survey 包的解决方案也可以,因为我没有目标但仍然无法让它发挥作用。

我知道有一些关于权重问题的帖子,但我找不到适合我的问题的解决方案。感谢您的帮助。

# create data
surveydata <- as.data.frame(replicate(1,sample(0:1,1000,rep=TRUE)))

# change values of columns
surveydata$V1 <- (replicate(1,sample(c(0.5,1,1.5),1000,rep=TRUE)))
surveydata$V2 <- as.factor(sample(3, size = nrow(surveydata), replace = TRUE))
          levels(surveydata$V2)[levels(surveydata$V2)=="1"] <- "a"
          levels(surveydata$V2)[levels(surveydata$V2)=="2"] <- "b"
          levels(surveydata$V2)[levels(surveydata$V2)=="3"] <- "c"

# rename columns
colnames(surveydata)[1] <- "weight"
colnames(surveydata)[2] <- "variable"

【问题讨论】:

    标签: r survey weighted


    【解决方案1】:

    使用比例而不是百分比

    > library(survey)
    > des<-svydesign(id=~1, weights=~weight,data=surveydata)
    > barplot(svymean(~variable,des))
    

    使用百分比最简单的方法可能是使用svytable(),它有一个用于缩放总计的参数:下面的代码显示总计、比例和百分比

    > svytable(~variable,des)
    variable
        a     b     c 
    320.5 365.5 331.5 
    > svytable(~variable,des,Ntotal=1)
    variable
            a         b         c 
    0.3149877 0.3592138 0.3257985 
    > svytable(~variable,des,Ntotal=100)
    variable
           a        b        c 
    31.49877 35.92138 32.57985 
    

    所以

    barplot(svytable(~variable,des,Ntotal=100),col="orange",ylab="%")
    

    要将数据传输到 SPSS,我会使用 write.foreign(),它会生成一个纯文本数据文件和一个 SPSS 代码文件来读取它。

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2023-03-05
      • 2019-09-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多