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)