I'm trying to learn how to calibrate/postStratify/rake survey data in preparation for a large survey effort we're about to embark upon. As a working example, I have results from a small survey of ~650 respondents, ~90 response fields each. I'm trying to learn how to (properly?) apply the aforementioned functions. My data are from a bus on board survey. The expansion in the dataset is derived from three elements: Response rates by bus stop for a sampled run Total runs/samples runs Normalized to (separately derived) daily line boarding In order to get to the point of raking the data, I need to learn more about the survey package and nomenclature. For instance, given how I've described the survey/weighting, is my call to svydesign correct? I'm not sure I understand just what a "survey design" is. Where can I read up on this? What's a good reference for such things as "PSUs", "cluster sampling", and so on. I've tried the following code, which fails:> SurveyData <- read.spss("C:/Data/R/orange_delivery.sav",use.value.labels=TRUE, max.value.labels=Inf, to.data.frame=TRUE)>#=============================================================================> temp <- sub(' +$', '', SurveyData$direction_)> SurveyData$direction_ <- temp>#=============================================================================>SurveyData$NumStn=abs(as.numeric(SurveyData$lineon)-as.numeric(SurveyDat a$lineoff))> EBSurvey <- subset(SurveyData, direction_ == "EASTBOUND" )> XTTable <- xtabs(~direction_ , EBSurvey)> XTTabledirection_ EASTBOUND 345> WBSurvey <- subset(SurveyData, direction_ == "WESTBOUND" )> XTTable <- xtabs(~direction_ , WBSurvey)> XTTabledirection_ WESTBOUND 307> #> EBDesign <- svydesign(id=~sampn, weights=~expwgt, data=EBSurvey)> # svytable(~lineon+lineoff, EBDesign)> OnLabels <- c( "Warner Center", "De Soto", "Pierce College","Tampa", "Reseda", "Balboa", "Woodley", "Sepulveda", "Van Nuys", "Woodman", "Valley College", "Laurel Canyon", "North Hollywood")> EBOnNewTots <- c( 1000, 600, 1200,500, 1000, 500, 200, 250, 1000, 300, 100, 50, 73.65 )> EBNumStn <- c(673.65, 800, 1000, 1000, 800, 700, 600, 500, 400,200, 50, 50 )> ByEBOn <- data.frame(OnLabels,EBOnNewTots)> ByEBNum <- data.frame(c(1:12),EBNumStn)> RakedEBSurvey <- rake(EBDesign, list(~ByEBOn, ~ByEBNum),list(EBOnNewTots, EBNumStn ) ) Error in model.frame.default(margin, data = design$variables) : invalid type (list) for variable 'ByEBOn'>Robert Farley Metro 1 Gateway Plaza Mail Stop 99-23-7 Los Angeles, CA 90012-2952 Voice: (213)922-2532 Fax: (213)922-2868 www.Metro.net [[alternative HTML version deleted]]
Your reading, in increasing order of difficulty/mathematical details, might be Lohr's "Sampling" (http://www.citeulike.org/user/ctacmo/article/1068825), Korn & Graubard's "Health Surveys" (http://www.citeulike.org/user/ctacmo/article/553280), and Sarndal et. al. Survey Math Bible (http://www.citeulike.org/user/ctacmo/article/716032). You certainly should try to get a hold of the primary concepts before collecting your data (or rather before designing your survey... so it might already be too late!). Post-stratification is not that huge topic, for some reason; a review of mathematical details is given by Valliant (1993) (http://www.citeulike.org/user/ctacmo/article/1036976). On raking, the paper on top of Google Scholar search by Deville, Sarndal and Sautory (1993) (http://www.citeulike.org/user/ctacmo/article/3134001) is certainly coming from the best people in the field. I am not aware of general treatment of transportation survey sampling, although I suspect such references do exist in transportation research. There might be particular twists as the same subject/bus usage episode might be sampled at different locations. As far as rake() procedure is concerned, you need to have your data set up as sampled observations with two classifications across which you will be raking, probably the directions "E"/"W" and the stations. Those are not different data.frames, as you are trying to set them up, but a single data.frame with several columns. In other words, your sampled data will have labels "E"/"W" in one of the columns, and station names in another column, and (the names of) those columns will be the imputs of rake(). On 8/18/08, Farley, Robert <FarleyR at metro.net> wrote:> I'm trying to learn how to calibrate/postStratify/rake survey data in > preparation for a large survey effort we're about to embark upon. As a > working example, I have results from a small survey of ~650 respondents, > ~90 response fields each. I'm trying to learn how to (properly?) apply > the aforementioned functions. > > My data are from a bus on board survey. The expansion in the dataset is > derived from three elements: > > Response rates by bus stop for a sampled run > > Total runs/samples runs > > Normalized to (separately derived) daily line boarding > > In order to get to the point of raking the data, I need to learn more > about the survey package and nomenclature. For instance, given how I've > described the survey/weighting, is my call to svydesign correct? I'm > not sure I understand just what a "survey design" is. Where can I read > up on this? What's a good reference for such things as "PSUs", "cluster > sampling", and so on.-- Stas Kolenikov, also found at http://stas.kolenikov.name Small print: I use this email account for mailing lists only.
Reasonably Related Threads
- Simple (?) subset problem
- bootstrapped eigenvector method following prcomp
- ordered logistic regression of survey data with missing variables
- Test for stochastic dominance, non-inferiority test for distributions
- How do I read a text (.csv) file to match a matrix/cross tab? (Object confusion??)