Использую ли я правильный синтаксис для trimWeights()?

#r #survey

#r #опрос

Вопрос:

Я довольно новичок в RStudio, но я пытаюсь изучить пакет опроса для рабочих целей. Я пытаюсь настроить веса svydesign объекта с помощью trimWeights функции. Это код, который я использую до сих пор.

 library(survey)
library(tidyverse)
Sys.setenv(JAVA_HOME='C:\Program Files\Java\jre1.8.0_201')

library(xlsx)

allsurveys = read.csv('allsurveys.csv', stringsAsFactors = FALSE, fileEncoding="UTF-8-BOM")

> head(allsurveys)
   case         daytype family 
1 36846 3 VA October WD     No  
2 36847 3 VA October WD     No   
3 36848 3 VA October WD     No   
4 36849 3 VA October WD     No   
5 36850 3 VA October WD    Yes   
6 36852 3 VA October WD     No 

daytype.table = read.csv('daytype_counts.csv', stringsAsFactors = FALSE, fileEncoding="UTF-8-BOM")

> head(daytype.table)
                              daytype   freq
1                     3 VA October WD 179786
2                     3 VA October WE  58237
3 3 VA October WE Autumn Half-term SH  54578
4 3 VA October WD Autumn Half-term SH  70652
5                    3 VA November WD 193441
6                    3 VA November WE  98562

allsurveys$daytype = factor(allsurveys$daytype)
allsurveys$family  = factor(allsurveys$family)

N = sum(daytype.table$freq)
na = nrow(allsurveys)
max.a = (3*N)/na
min.a = (0.3*N)/na

des.a = svydesign(ids = ~1,
                  strata = NULL,
                  fpc = rep(N,na),
                  data = allsurveys
                  )

ps.des.a <- postStratify(design = des.a, strata = ~daytype, population = daytype.table)
ps.des.c <- postStratify(design = des.c, strata = ~daytype, population = daytype.table)

ps.des.a.trim <- trimWeights(ps.des.a, lower=min.a, upper=max.c, strict=TRUE)
ps.des.c.trim <- trimWeights(ps.des.c, lower=min.c, upper=min.c, strict=TRUE)
  

trimWeights Функция выполняется и создает новый svydesign объект, но, похоже, верхний предел применяется неправильно. Если я посмотрю на веса, используя list(ps.des.a.trim$postStrata) , я получу некоторые веса внизу, которые превышают те, которые max.a я установил. Я не совсем уверен, что здесь происходит не так. Это потому, что я пытаюсь урезать веса на svydesign , которые были взвешены с помощью postStratify ?

Комментарии:

1. Добавьте некоторые данные, чтобы мы могли видеть, что вы пытаетесь сделать.

2. Убрал несколько ненужных фрагментов кода. Файл allsurveys.csv содержит данные на уровне обращений, помеченные типом дня, когда был завершен опрос. daytype_counts.csv содержит частоту для каждого типа дня, который используется для взвешивания после стратификации. Надеюсь, это немного прояснит ситуацию.

Ответ №1:

Вы можете извлечь веса следующим образом :

 weights(ps.des.a.trim)
  

На самом деле я заметил то же самое, на что вы ссылаетесь, и это было немного странно. Однако, если вы применяете svymean функцию или подобные функции, результаты учитывают урезанные веса. Не старые.