Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mice.impute.quadratic bug?? #575

Open
johamunoz opened this issue Aug 3, 2023 · 1 comment
Open

mice.impute.quadratic bug?? #575

johamunoz opened this issue Aug 3, 2023 · 1 comment
Labels

Comments

@johamunoz
Copy link

johamunoz commented Aug 3, 2023

Dear all,

** Describe the issue:
I am trying to use the function mice.impute.quadratic in a binomial model. The function works when the outcome "y" is specified as a continuous variable but as soon as I specify it as a factor, I get an error. Is this function applicable for this scenario or is this a bug?

Please look at the following reproducible example
Thank you very much
Johanna

To Reproduce

Create data

N <- 500
Beta <- c(-2.3365665,0.8569439,0.3011304)
X <- runif(n=N, min=-3, max=3)
XX <- X^2
linear <- plogis(Beta[[1]]+Beta[[2]]*X + Beta[[3]]*XX)
Y <- rbinom(n = N, size = 1, prob = linear)
ID <- 1:N

dat <- data.frame(x = X, xx = XX, y = Y, ID = ID)

Ampute

patterns = rbind(c( 1, 1, 0, 1), c(0, 0, 1, 1), c(0, 0, 0, 1)) # (0=missing, 1=observed)
freq = c(1/3, 1/3,1/3) # ocurrence of patterns
mech = c("MAR")
weights = ampute.default.weights(patterns, mech) # Weights of weighted sum scores

data_inc <- ampute(data = dat,
patterns = patterns,
prop = prop, #Percentage of missing cells
freq = freq,
mech = mech,
weights=weights)$amp

Prepare data for imputation

ini <- mice(data_inc, maxit = 0)
meth <- c("quadratic", "~I(x^2)", "logreg","")
pred <- ini$pred
pred["x", "xx"] <- 0

Impute data with y as continuous

imp <- mice(data_inc, meth = meth, pred = pred, quad.outcome = "y")

Warning message:Type mismatch for variable(s): y Imputation method logreg is for categorical data.

Impute data with y as factor

data_inc $y<- as.factor(data_inc$y)
imp <- mice(data_inc, meth = meth, pred = pred, quad.outcome = "y")

iter imp variable1 1 xError in mice.impute.quadratic(y = c(-2.00387528445572, -0.957946232054383, : The name specified for the outcome in 'quad.outcome' can not be found in the data

@johamunoz johamunoz added the bug label Aug 3, 2023
@johamunoz
Copy link
Author

Also when I tried to do it with the "smcfcs" method. I don't get correctly imputed values for y, (I get values out of 0 or 1) as you can see here
data_inc$x_sq<-NULL
imp<- mice::mice(data_inc, method="smcfcs", sm= y ~ x + I(x^2), m=5, maxit=10, smtype="logistic")
summary(complete(imp,1))

However if I use Professor Barletts "smcfcs" package I get consistent imputed y values.
data_inc$x_sq <- data_inc$x^2
nonmice <- smcfcs::smcfcs(data_inc, smtype="logistic", smformula=y ~ x + x_sq, method=c("norm", "", "", "x^2"))$impDatasets
summary(nonmice[[1]]).

If you could show me what my error is or guide me on how to use the "quadratic "or "smcfcs "method properly I would appreciate it very much since I need to use the mice.mids function that does not work with outputs from the smcfcs package. Thank you very much Johanna

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant