# Ordinal Categorical Data ----
def1 <- defData(
varname = "male",
formula = 0.45, dist = "binary", id = "idG"
)
def1 <- defData(def1,
varname = "z",
formula = "1.2*male", dist = "nonrandom"
)
def1
## Generate data
set.seed(20)
dx <- genData(1000, def1)
probs <- c(0.40, 0.25, 0.15)
dx <- genOrdCat(dx,
adjVar = "z", idname = "idG", baseprobs = probs,
catVar = "grp"
)
dx
# Correlated Ordinal Categorical Data ----
baseprobs <- matrix(c(
0.2, 0.1, 0.1, 0.6,
0.7, 0.2, 0.1, 0,
0.5, 0.2, 0.3, 0,
0.4, 0.2, 0.4, 0,
0.6, 0.2, 0.2, 0
),
nrow = 5, byrow = TRUE
)
set.seed(333)
dT <- genData(1000)
dX <- genOrdCat(dT,
adjVar = NULL, baseprobs = baseprobs,
prefix = "q", rho = .125, corstr = "cs", asFactor = FALSE
)
dX
dM <- data.table::melt(dX, id.vars = "id")
dProp <- dM[, prop.table(table(value)), by = variable]
dProp[, response := c(1:4, 1:3, 1:3, 1:3, 1:3)]
data.table::dcast(dProp, variable ~ response,
value.var = "V1", fill = 0
)
# proportional odds assumption violated
d1 <- defData(varname = "rx", formula = "1;1", dist = "trtAssign")
d1 <- defData(d1, varname = "z", formula = "0 - 1.2*rx", dist = "nonrandom")
dd <- genData(1000, d1)
baseprobs <- c(.4, .3, .2, .1)
npAdj <- c(0, 1, 0, 0)
dn <- genOrdCat(
dtName = dd, adjVar = "z",
baseprobs = baseprobs,
npVar = "rx", npAdj = npAdj
)
Run the code above in your browser using DataLab