R调查数据添加权重

问题描述 投票:0回答:1

我有已分配权重的调查数据。 这是一个玩具样品。 如果我不对数据进行加权,它就不能准确地代表总体。 有没有一种简单的方法来计算权重? 鉴于权重是样本中某个特定人代表人口 X 中的多少人,我是否需要乘以 obs * 权重? 我查看了 youtube 但我没有视频中提到的分层数据,我的数据都是个人数据,在其他地方没有任何运气搜索。

提前感谢您的帮助

ID <- c(1,2,3,4,5,6,7,8,9)
year <- c(1980,1980,1980,1981,1981,1981,1982,1982,1982)
city <- c("NY", "LA", "CA", "NY", "LA","CA","NY", "LA","CA")
favFood <-  c("pizza","salad","tacos","tacos","frenchFries","pizza","tacos","hamburger","frenchFries")
weight <- c(100,17,25,1,100,52,35,10,5)

df <- data.frame(ID,year,city,favFood,weight)

print(df)

# aggregate count by year city favFood but now add the weights
a <- aggregate(ID ~ year + city + favFood + weight,
               data = df,  
               FUN = length) 
a
r survey weighted sample-data
1个回答
0
投票

在 Stata 中,您可以根据分析需要使用“pweight”或“fweight”,R 中的原理类似:通过权重调整数据以反映样本在总体中的代表性。

在您的情况下,您有频率权重,您可以将每个观测值乘以其权重以反映聚合中的人口计数,然后按所需变量聚合加权计数。

从可能的分区(或组)中,您可以获取年份、城市和最喜欢的食物,并对权重求和。结果为您提供了总体偏好的表示,而不仅仅是样本,一种方法是:

library(dplyr)

df %>%
  group_by(year, city, favFood) %>%
  summarize(weighted_count = sum(weight), .groups = "drop")
© www.soinside.com 2019 - 2024. All rights reserved.