# inst/tests/aregImpute6.r In harrelfe/Hmisc: Harrell Miscellaneous

```## Tests contraint option with a small data frame

require(Hmisc)
w <- data.frame(x1=c(NA, 1:4,    NA),
x2=c(1,  3,2,4,5, 6),
x3=c(11,15,12,13,17,18))
aregImpute(~ x1 + x2 + x3, data=w, nk=0,
constraint=list(x1 = expression(d\$x3 %in% 12:13)))

## Test on a larger dataset by showing that inconsequential constraints
## result in the same object as an unconstrained run, except for 3 elements

set.seed(1)
n <- 2000
w <- data.frame(x1=runif(n), x2=ifelse(runif(n) < 0.05, NA, runif(n)),
x3=ifelse(runif(n) < 0.05, NA, runif(n)))
set.seed(1)
z1 <- aregImpute(~ x1 + x2 + x3, data=w)
z1\$call <- z1\$constraint <- z1\$countqual <- NULL
set.seed(1)
z2 <- aregImpute(~ x1 + x2 + x3, data=w,
constraint=list(x2=expression(rep(TRUE, nrow(d))),
x3=expression(rep(TRUE, nrow(d)))))
z2\$call <- z2\$constraint <- z2\$countqual <- NULL
identical(z1, z2)

## Apply real constraints and make sure constraints were satisfied for
## imputed values
set.seed(3)
z <- aregImpute(~ x1 + x2 + x3, data=w,
constraint=list(x2=expression(d\$x2 >= 0.3 & d\$x2 <= 0.4),
x3=expression(d\$x3 > r\$x1)))
u <- z\$imputed\$x2
range(u)
table(round(u, 2))
j <- is.na(w\$x3)
for(i in 1 : 5) {
d <- completer(z, nimpute=i, oneimpute=TRUE, w)
with(d[j, ], cat(mean(x3 > x1), ''))
}
```
harrelfe/Hmisc documentation built on May 19, 2024, 4:13 a.m.