2016-06-15 57 views
2

我目前正试图在R中执行anesrake函数(基于样本属性集对人口属性集进行加权的anesrake程序包的一部分)来近似多组变量的权重排名。执行多个目标变量时Anesrake运行错误

我有采样数据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) 

我终于能看到我的人口数据的方差VS我的样本数据:

> 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

任何帮助,你可以提供这将是极大的,不胜感激。

干杯,

斯图

+0

你有没有标记的目标变量相同数据变量的水平水平找到一种方法来绕过这个? – Kevin

+0

不幸的是:( –

+0

你好@StuRichards!是这个解决方案吗?即时获得同样的错误。 – dixi

回答

0

我只是从文字转化我的数据因素解决了同样的问题。

你可以尝试以下方法:

testData$GENDER <- as.factor(testData$GENDER) 
testData$AGE <- as.factor(testData$AGE) 
0

您需要使用下面的示例 -

names(targets$agecat1) <- levels(rak2$agecat1) 
names(targets$newpayer) <- levels(rak2$newpayer)