Create an observed data set that includes missing data

genObs(dtName, dtMiss, idvars)

Arguments

dtName

Name of complete data set

dtMiss

Name of missing data matrix

idvars

Index variables that cannot be missing

Value

A data table that represents observed data, including missing data

See also

Examples

def1 <- defData(varname = "m", dist = "binary", formula = .5)
def1 <- defData(def1, "u", dist = "binary", formula = .5)
def1 <- defData(def1, "x1", dist = "normal", formula = "20*m + 20*u", variance = 2)
def1 <- defData(def1, "x2", dist = "normal", formula = "20*m + 20*u", variance = 2)
def1 <- defData(def1, "x3", dist = "normal", formula = "20*m + 20*u", variance = 2)

dtAct <- genData(1000, def1)

defM <- defMiss(varname = "x1", formula = .15, logit.link = FALSE)
defM <- defMiss(defM, varname = "x2", formula = ".05 + m * 0.25", logit.link = FALSE)
defM <- defMiss(defM, varname = "x3", formula = ".05 + u * 0.25", logit.link = FALSE)
defM <- defMiss(defM, varname = "u", formula = 1, logit.link = FALSE) # not observed
defM
#>    varname        formula logit.link baseline monotonic
#>     <char>         <char>     <lgcl>   <lgcl>    <lgcl>
#> 1:      x1           0.15      FALSE    FALSE     FALSE
#> 2:      x2 .05 + m * 0.25      FALSE    FALSE     FALSE
#> 3:      x3 .05 + u * 0.25      FALSE    FALSE     FALSE
#> 4:       u              1      FALSE    FALSE     FALSE

# Generate missing data matrix

missMat <- genMiss(dtAct, defM, idvars = "id")
missMat
#> Key: <id>
#>          id    x1    x2    x3     u     m
#>       <int> <int> <int> <int> <int> <num>
#>    1:     1     0     0     0     1     0
#>    2:     2     0     0     0     1     0
#>    3:     3     0     0     0     1     0
#>    4:     4     0     0     0     1     0
#>    5:     5     0     0     1     1     0
#>   ---                                    
#>  996:   996     0     0     0     1     0
#>  997:   997     0     0     0     1     0
#>  998:   998     0     0     0     1     0
#>  999:   999     0     0     0     1     0
#> 1000:  1000     0     1     0     1     0

# Generate observed data from actual data and missing data matrix

dtObs <- genObs(dtAct, missMat, idvars = "id")
dtObs
#> Key: <id>
#>          id     m     u         x1         x2         x3
#>       <int> <int> <int>      <num>      <num>      <num>
#>    1:     1     1    NA 17.1661367 20.8383957 20.0615940
#>    2:     2     0    NA  0.6276502  0.3794982 -0.2374385
#>    3:     3     0    NA  1.9410362  0.1180233 -1.9132918
#>    4:     4     0    NA 19.2127189 18.7326903 18.7449801
#>    5:     5     1    NA 19.3449707 20.3654118         NA
#>   ---                                                   
#>  996:   996     1    NA 41.2886294 38.9003498 42.3162857
#>  997:   997     0    NA 20.9883677 23.0413971 19.5383268
#>  998:   998     0    NA  0.4673572  1.1353294 -3.0981135
#>  999:   999     1    NA 39.6008298 39.1885511 39.4920356
#> 1000:  1000     1    NA 21.4509763         NA 20.5039990