我目前正在尝试在 R 中执行 anesrake 函数(anesrake 包https://cran.r-project.org/web/packages/anesrake/index.html的一部分,它根据样本属性集对总体属性集进行加权)到多组变量的近似权重排名。
我有一个样本数据表 testData:
Index GENDER AGE
1 Female 18-24
2 Female 35-64
3 Male 65+
注意:年龄范围有 6 个级别 - 18-24,25-34,35-44,45-54,55-64,65+
然后,我的人口数据有一组 2 个列表:
GENDER <- c(.49,.51)
AGE <- c(.08,.1,.12,.2,.2,.3)
然后我在原始表上创建一组目标变量和一个 CASEID 列:
targets <- list(GENDER, AGE)
names(targets) <- c("GENDER", "AGE")
testData$CASEID <- 1:length(testData$GENDER)
我终于看到了我的人口数据与我的样本数据的差异:
> anesrakefinder(targets, testData, choosemethod = "total")
GENDER AGE
0.1495337 0.3668394
但是当我使用 anesrake 函数做最终分析时,我得到了抛出的错误:
> anesrake(inputter=targets,dataframe=testData,caseid=testData$CASEID)
Error in rakeonvar.default(mat[, i], inputter[[i]], weightvec) :
number of variable levels does not match number of weighting levels
In addition: Warning message:
In rakeonvar.default(mat[, i], inputter[[i]], weightvec) :
NAs introduced by coercion
我一直在关注两个关于如何使用 anesrake 的“教程”,但我仍然不够努力。这些是下面的教程:
http://sdaza.com/survey/2012/08/25/raking/
http://surveyinsights.org/wp-content/uploads/2014/07/Full-anesrake-paper.pdf
您可以在这方面提供的任何帮助将不胜感激。
干杯,
斯图