I'm studying the calibration function in the survey package in preparation for raking some survey data. Results from the rake function below agree with other sources. When I run calibrate, I get a warning message and the M and F weights seem to be reversed. Even allowing for that, the deviation between calibrated and raked weights is much more than I expected. I see that in the calibrate function "population" is supposed to be a vector or table, but can't figure out how to adjust. Can you clarify? Thanks.
-M. Laviolette satisfy <- c(2,5,2,3,4,3,3,3,4,2,2,3,2,3,4,3,3,2,3,3,4,3,3,3,2, 3,3,3,2,1,4,4,3,3,2,3,4,2,3,3,3,5,3,1,4,3,3,4,4,2, 3,3,3,5,4,4,5,3,4,4,5,3,3,4,3,3,3,3,2,4,4,3,3,4,3, 2,4,4,3,4,4,4,5,3,3,4,4,4,3,2,2,4,3,4,3,4,4,3,3,3, 3,4,4,4,4,3,3,3,3,2,3,3,2,2,5,4,5,2,4,4,4,3,4,4,2, 4,4,3,4,3,4,2,3,3,2,4,3,4,4,3,5,2,4,4,3,4,5,3,3,3, 3,2,3,4,4,4,2,4,4,2,3,5,2,2,3,3,3,3,3,4,4,3,3,4,4, 4,4,4,4,4,4,3,2,3,3,3,3,4,4,4,3,3,4,3,4,4,4,3,3,2) Gender <- c(1,2,1,1,2,1,1,2,1,2,1,1,2,1,1,1,1,2,2,1,2,1,1,2,1, 2,1,1,2,2,1,1,2,1,2,2,1,1,1,1,2,1,1,1,1,1,1,1,2,1, 1,1,1,1,2,1,1,2,2,2,2,2,2,2,2,2,1,1,1,1,2,1,2,1,2, 1,1,2,1,1,2,1,1,1,1,1,1,2,1,1,2,2,2,2,1,1,2,2,1,2, 1,1,2,1,2,1,2,2,1,1,1,2,1,1,1,2,1,1,2,1,2,2,2,1,1, 2,2,1,1,1,2,1,2,1,2,2,1,1,1,2,2,1,2,2,2,2,1,2,2,1, 2,1,2,1,1,2,2,1,1,1,2,2,1,2,2,2,1,2,2,1,1,1,2,2,2, 1,2,1,2,2,2,2,1,1,2,1,1,1,2,1,1,2,2,1,1,1,1,2,1,1) Age <- c(2,3,2,1,2,2,2,2,3,2,2,1,2,2,2,2,2,2,2,2,2,2,2,3,2, 3,3,3,1,2,2,3,2,2,2,1,3,2,2,2,2,2,2,3,2,2,2,2,2,1, 3,3,2,3,2,2,2,2,2,2,2,3,2,2,1,2,2,2,1,2,2,3,2,2,1, 2,2,1,2,2,1,2,2,2,2,2,2,2,3,2,2,1,3,2,2,2,3,2,2,2, 3,1,2,1,2,2,1,2,2,2,2,2,2,1,2,2,3,1,2,2,2,2,2,2,2, 2,3,1,1,2,1,2,2,2,2,2,2,2,2,1,3,2,2,2,1,2,1,1,2,1, 2,1,1,2,2,2,2,2,2,2,2,3,2,1,2,1,1,2,3,3,1,3,3,2,2, 2,2,2,2,2,2,2,3,2,3,3,2,2,2,3,1,2,1,2,3,2,2,2,3,2) emp.dat <- data.frame(Gender = factor(Gender, labels = c("M", "F")), Age = factor(Age, labels = c("<30", "30-44", "45 +")), satisfy) pop.gender <- data.frame(Gender = c("M", "F"), Freq = c(3800, 6200)) pop.age <- data.frame(Age = c("<30", "30-44", "45+"), Freq = c(2000, 5000, 3000)) library(survey) emp.svy <- svydesign(ids = ~0, strata = NULL, weights = ~rep(50, 200), data = emp.dat) rake.svy <- rake(emp.svy, list(~Gender, ~Age), list(pop.gender, pop.age)) cal.svy <- calibrate(emp.svy, formula = list(~Gender, ~Age), population = list(pop.gender, pop.age), cal.fun = "raking") # Warning message: # In regcalibrate.survey.design2(design, formula, population, aggregate.stage # = aggregate.stage, :Sample and population totals have different names. # check weights--M and F seem reversed when "calibrate" used library(reshape2) check1 <- with(rake.svy, cbind(variables, weight = 1/prob)) dcast(check1, Gender~Age, sum, value.var = "weight", margins = TRUE) check2 <- with(cal.svy, cbind(variables, weight = 1/prob)) dcast(check2, Gender~Age, sum, value.var = "weight", margins = TRUE) ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.