ncn-foreigners / nonprobsvy

An R package for modern methods for non-probability surveys
https://ncn-foreigners.github.io/nonprobsvy/
Other
29 stars 4 forks source link

Error when using `svydesign` with `calibration` #7

Closed BERENZ closed 1 year ago

BERENZ commented 1 year ago

Generate data

set.seed(123)

N <- 10000
n <- 1000
x1 <- rnorm(n = N, mean = 1, sd = 1)
x2 <- rexp(n = N, rate = 1)
epsilon <- rnorm(n = N) # rnorm(N)
y1 <- 1 + x1 + x2 + epsilon
y2 <- 0.5*(x1 - 0.5)^2 + x2 + epsilon
p1 <- exp(x2)/(1+exp(x2))
p2 <- exp(-0.5+0.5*(x2-2)^2)/(1+exp(-0.5+0.5*(x2-2)^2))
population <- data.frame(x1,x2,y1,y2,p1,p2)
flag_bd1 <- rbinom(n = N, size = 1, prob = population$p1)
flag_srs <- sample(x = 1:N, size = n)
source_nonprob <- population[flag_bd1 == 1, ]
source_prob <- svydesign(ids = ~ 1, data = population[flag_srs, ], weights = rep(N/n, n))
source_prob_cal <- calibrate(source_prob, formula = ~x1+x2, c(`(Intercept)`= N, x1 = sum(populacja$x1), x2 = sum(populacja$x2))) ## calibration

Using source_prob works smoothly

test1a <- nonprob(selection = ~ x1+ x2,
                   target = ~ y1,
                   data = source_nonprob,
                   svydesign = source_prob)

but using source_prob_cal

causes the following error

test1b <- nonprob(selection = ~ x1+ x2,
                    target = ~ y1,
                    data = source_prob_cal,
                    svydesign = source_prob)
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
  cannot coerce class 'c("survey.design2", "survey.design")' to a data.frame