Check TDMM data for an outcome family
check.tdmm.family.data.RdApply structural and family-specific response checks to TDMM data with one row per observation.
Usage
check.tdmm.family.data(data, family = c("gaussian", "bernoulli", "poisson"), subject.var = "subject.ID", time.var = "time",
y.var = "y", x.var = NULL, stop.on.fail = TRUE)Arguments
- data
Data frame with one row per observation.
- family
One of "gaussian", "bernoulli", or "poisson".
- subject.var
Subject ID column name.
- time.var
Numeric observation-time column name.
- y.var
Response column name.
- x.var
Numeric covariate column names; NULL selects remaining columns.
- stop.on.fail
If TRUE, stop on invalid data; otherwise return diagnostics.
Value
A list of data-check diagnostics and selected covariates; invalid input raises an error when stop.on.fail is TRUE.
Examples
d <- data.frame(subject.ID = rep(1:3, each = 3),
time = rep(c(0, 0.5, 1), 3), y = rnorm(9), x = rnorm(9))
check.tdmm.family.data(d, family = "gaussian", x.var = "x")
#> $family
#> [1] "gaussian"
#>
#> $covariates
#> [1] "x"
#>
#> $p
#> [1] 1
#>
#> $structure.check
#> $structure.check$required.columns
#> [1] "subject.ID" "time" "y" "x"
#>
#> $structure.check$missing.counts
#> subject.ID time y x
#> 0 0 0 0
#>
#> $structure.check$has.missing
#> [1] FALSE
#>
#> $structure.check$subject.balance
#> $structure.check$subject.balance$n.subject
#> [1] 3
#>
#> $structure.check$subject.balance$min.obs.per.subject
#> [1] 3
#>
#> $structure.check$subject.balance$max.obs.per.subject
#> [1] 3
#>
#> $structure.check$subject.balance$mean.obs.per.subject
#> [1] 3
#>
#> $structure.check$subject.balance$obs.per.subject
#>
#> 1 2 3
#> 3 3 3
#>
#> $structure.check$subject.balance$balanced
#> [1] TRUE
#>
#> $structure.check$subject.balance$common.time.grid
#> [1] TRUE
#>
#> $structure.check$subject.balance$time.grid
#> [1] 0.0 0.5 1.0
#>
#> $structure.check$subject.balance$time.by.subject
#> $structure.check$subject.balance$time.by.subject$`1`
#> [1] 0.0 0.5 1.0
#>
#> $structure.check$subject.balance$time.by.subject$`2`
#> [1] 0.0 0.5 1.0
#>
#> $structure.check$subject.balance$time.by.subject$`3`
#> [1] 0.0 0.5 1.0
#>
#>
#>
#> $structure.check$x.var
#> [1] "x"
#>
#> $structure.check$p
#> [1] 1
#>
#> $structure.check$x.constant.within.subject
#> [1] FALSE
#>
#> $structure.check$covariate.numeric
#> x
#> TRUE
#>
#> $structure.check$covariate.variation
#> $structure.check$covariate.variation$x.constant.by.variable
#> x
#> FALSE
#>
#> $structure.check$covariate.variation$x.unique.by.subject
#> $structure.check$covariate.variation$x.unique.by.subject$x
#> 1 2 3
#> 3 3 3
#>
#>
#> $structure.check$covariate.variation$baseline.covariates
#> character(0)
#>
#> $structure.check$covariate.variation$time.varying.covariates
#> [1] "x"
#>
#> $structure.check$covariate.variation$has.time.varying.covariates
#> [1] TRUE
#>
#>
#> $structure.check$x.constant.by.variable
#> x
#> FALSE
#>
#> $structure.check$x.unique.by.subject
#> $structure.check$x.unique.by.subject$x
#> 1 2 3
#> 3 3 3
#>
#>
#> $structure.check$baseline.covariates
#> character(0)
#>
#> $structure.check$time.varying.covariates
#> [1] "x"
#>
#> $structure.check$has.time.varying.covariates
#> [1] TRUE
#>
#> $structure.check$ordered.by.subject.time
#> [1] TRUE
#>
#>
#> $response.check
#> $response.check$family
#> [1] "gaussian"
#>
#> $response.check$overall
#> $response.check$overall$n
#> [1] 9
#>
#> $response.check$overall$mean
#> [1] 0.0831636
#>
#> $response.check$overall$sd
#> [1] 1.007282
#>
#> $response.check$overall$min
#> [1] -1.304544
#>
#> $response.check$overall$max
#> [1] 1.888505
#>
#>
#> $response.check$by.time
#> time n mean sd min max
#> 1 0.0 3 0.9314842 0.8336790 0.3629513 1.8885049
#> 2 0.5 3 -0.7720212 0.6159595 -1.3045435 -0.0974451
#> 3 1.0 3 0.0900278 0.8986038 -0.9358474 0.7377763
#>
#>