Generate synthetic binary-indicator data with known latent class structure. All item response probabilities are explicitly specified.
Arguments
- item_probs
Numeric matrix of dimension
n_items x n_classes. Each column gives the probability that each item equals 1 for that class. All values must be in \([0, 1]\).- class_probs
Numeric vector of length
n_classes. Class mixing proportions. Need not sum to 1 – normalised internally.- n
Positive integer. Total sample size.
- seed
Integer or NULL. Random seed for reproducibility.
Value
A named list with elements:
datadata.frame with binary columns
item1...itemmand integer columntrue_class(labels 1...K).paramslist with
item_probsandclass_probs(as supplied, un-normalised).
Examples
item_probs <- matrix(c(0.9, 0.1, 0.9, 0.1,
0.1, 0.9, 0.1, 0.9), nrow = 4, ncol = 2)
r <- simulate_lca(item_probs = item_probs, class_probs = c(0.5, 0.5),
n = 200, seed = 1)
r$data # data.frame
#> item1 item2 item3 item4 true_class
#> 1 0 1 0 1 2
#> 2 0 1 1 1 2
#> 3 1 1 1 1 1
#> 4 1 0 1 0 1
#> 5 0 0 1 1 2
#> 6 1 0 0 0 1
#> 7 1 0 1 0 1
#> 8 1 0 1 1 1
#> 9 1 0 0 0 1
#> 10 0 0 0 1 2
#> 11 1 0 1 1 2
#> 12 0 1 0 1 2
#> 13 1 0 1 0 1
#> 14 1 1 0 0 2
#> 15 1 0 1 0 1
#> 16 0 1 0 1 2
#> 17 1 0 1 1 1
#> 18 0 0 1 1 1
#> 19 1 1 0 1 2
#> 20 1 0 1 0 1
#> 21 1 0 1 0 1
#> 22 0 1 0 1 2
#> 23 1 0 1 0 1
#> 24 0 1 0 1 2
#> 25 1 1 0 1 2
#> 26 0 1 0 1 2
#> 27 0 1 0 1 2
#> 28 0 0 0 1 2
#> 29 1 0 1 0 1
#> 30 0 1 1 1 2
#> 31 0 0 0 1 2
#> 32 1 0 1 1 1
#> 33 0 1 0 1 2
#> 34 0 1 0 1 2
#> 35 1 0 1 0 1
#> 36 1 0 1 0 1
#> 37 1 0 1 0 1
#> 38 0 1 0 1 2
#> 39 1 0 1 1 1
#> 40 0 0 0 1 2
#> 41 1 0 0 1 1
#> 42 1 0 1 0 1
#> 43 0 0 0 0 1
#> 44 1 0 1 0 1
#> 45 1 0 1 0 1
#> 46 1 0 1 0 1
#> 47 0 1 0 1 2
#> 48 0 0 0 1 2
#> 49 1 0 1 0 1
#> 50 0 0 0 0 1
#> 51 0 0 0 0 2
#> 52 0 0 1 0 1
#> 53 0 1 0 1 2
#> 54 0 1 0 0 2
#> 55 0 1 0 1 2
#> 56 0 1 0 1 2
#> 57 0 1 0 1 2
#> 58 1 1 1 0 1
#> 59 1 0 1 0 1
#> 60 1 1 0 1 2
#> 61 1 0 1 0 1
#> 62 0 1 0 1 2
#> 63 0 1 0 1 2
#> 64 0 1 0 1 2
#> 65 1 0 1 0 1
#> 66 0 0 0 1 2
#> 67 0 1 1 1 2
#> 68 1 0 1 0 1
#> 69 0 1 0 1 2
#> 70 1 0 1 0 1
#> 71 0 1 0 1 2
#> 72 1 1 1 1 1
#> 73 0 1 0 1 2
#> 74 0 1 0 1 2
#> 75 0 1 0 1 2
#> 76 1 0 1 0 1
#> 77 1 0 1 0 1
#> 78 0 1 0 1 2
#> 79 1 0 1 0 1
#> 80 1 0 1 1 1
#> 81 0 1 0 1 2
#> 82 1 0 1 1 1
#> 83 0 1 0 0 2
#> 84 0 0 0 1 2
#> 85 1 0 1 0 1
#> 86 0 1 0 1 2
#> 87 1 0 1 0 1
#> 88 0 1 0 1 2
#> 89 0 1 0 1 2
#> 90 0 1 1 1 2
#> 91 0 1 0 1 2
#> 92 0 0 0 1 2
#> 93 0 0 1 0 1
#> 94 1 0 1 0 1
#> 95 1 0 1 0 1
#> 96 1 0 1 0 1
#> 97 0 1 0 1 2
#> 98 0 1 0 1 2
#> 99 1 0 0 0 1
#> 100 0 0 1 0 1
#> 101 1 0 0 0 1
#> 102 0 1 1 1 2
#> 103 0 1 0 1 2
#> 104 1 0 1 0 1
#> 105 1 0 1 0 1
#> 106 1 0 0 1 2
#> 107 0 1 0 1 2
#> 108 0 1 0 1 2
#> 109 1 0 0 0 1
#> 110 1 0 1 0 1
#> 111 1 0 1 0 1
#> 112 1 0 1 0 1
#> 113 0 1 0 1 2
#> 114 0 1 0 1 2
#> 115 0 1 0 1 2
#> 116 0 1 0 1 2
#> 117 1 0 1 0 1
#> 118 0 1 0 1 2
#> 119 1 1 0 1 2
#> 120 1 0 1 0 1
#> 121 1 0 1 0 1
#> 122 0 1 0 0 2
#> 123 0 1 1 0 2
#> 124 1 1 0 1 2
#> 125 1 0 1 0 1
#> 126 1 0 0 1 2
#> 127 1 0 1 0 1
#> 128 0 1 0 1 2
#> 129 0 0 0 1 2
#> 130 1 1 1 0 1
#> 131 0 0 1 0 1
#> 132 0 1 0 0 2
#> 133 0 1 0 1 2
#> 134 1 0 1 0 1
#> 135 1 0 1 0 1
#> 136 1 0 1 0 1
#> 137 1 0 1 1 1
#> 138 1 0 1 0 1
#> 139 1 0 1 0 1
#> 140 0 0 1 0 1
#> 141 0 0 1 0 1
#> 142 1 1 1 1 1
#> 143 0 1 0 1 2
#> 144 0 1 0 1 2
#> 145 1 0 1 0 1
#> 146 0 1 0 1 2
#> 147 0 0 0 1 2
#> 148 1 0 1 0 1
#> 149 0 1 0 0 2
#> 150 1 0 1 0 1
#> 151 1 0 1 0 1
#> 152 1 0 0 0 1
#> 153 0 1 0 1 2
#> 154 0 0 0 1 2
#> 155 0 0 1 0 1
#> 156 0 1 0 1 2
#> 157 1 0 1 0 1
#> 158 0 1 0 1 2
#> 159 0 1 1 1 2
#> 160 0 1 0 1 2
#> 161 0 1 0 1 2
#> 162 1 0 1 0 1
#> 163 0 1 0 1 2
#> 164 1 0 1 0 1
#> 165 1 1 1 0 1
#> 166 0 1 0 1 2
#> 167 0 1 0 1 2
#> 168 0 1 0 1 2
#> 169 1 0 1 1 1
#> 170 0 0 0 1 2
#> 171 1 0 1 1 1
#> 172 1 0 1 0 1
#> 173 0 0 1 0 1
#> 174 0 1 1 0 2
#> 175 0 1 0 1 2
#> 176 1 0 1 0 1
#> 177 1 0 1 0 1
#> 178 1 0 1 0 1
#> 179 1 0 1 0 1
#> 180 1 0 0 0 1
#> 181 0 1 1 1 2
#> 182 0 0 0 1 2
#> 183 1 0 1 1 1
#> 184 0 0 1 0 1
#> 185 1 0 1 0 1
#> 186 0 1 0 1 2
#> 187 1 0 1 0 1
#> 188 1 0 1 0 1
#> 189 1 1 1 1 1
#> 190 0 0 1 0 1
#> 191 1 0 1 0 1
#> 192 0 1 0 1 2
#> 193 1 1 1 1 2
#> 194 1 0 1 0 1
#> 195 0 1 0 1 2
#> 196 1 0 1 0 1
#> 197 0 1 0 1 2
#> 198 1 0 1 0 1
#> 199 0 1 0 1 2
#> 200 1 0 1 0 1
r$params # ground-truth parameters
#> $item_probs
#> [,1] [,2]
#> [1,] 0.9 0.1
#> [2,] 0.1 0.9
#> [3,] 0.9 0.1
#> [4,] 0.1 0.9
#>
#> $class_probs
#> [1] 0.5 0.5
#>