Имитация нормальных распределенных данных из данных c в R - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно смоделировать данные на основе двух случайных величин. Каждая случайная величина представляет собой набор из 0, 1 и 2 (данные c). Ниже приведен пример переменных для 10 наблюдений:

Случайная переменная. 1:

v_1 = cbind(rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)))

Случайная переменная 2:

v_2 = cbind(rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)), rep(rbinom(10,2,0.4)),  rep(rbinom(10,2,0.4)))

Эти переменные обычно имеют среднее значение = 0 и дисперсию = 1 (или другое значение, которое я могу выбрать). Кроме того, мне также нужно добавить термин ошибки, нормально распределенное среднее = 0 и дисперсию = 1.

Может кто-нибудь помочь с этим?

1 Ответ

1 голос
/ 01 мая 2020

Я поместил последовательность в векторах внутри data.frame. Вы можете изменить это, если хотите, и поместить его в разные столбцы.

n <- 100
t <- 5

library(data.table)
d <- data.table( 
  v1 = lapply(1:n, function(x) sample(0:2, t, replace = T) ),
  v2 = lapply(1:n, function(x) sample(0:2, t, replace = T) ),
  v1e = rnorm(n),
  v2e = rnorm(n)
)

head(d)

          v1        v2        v1e        v2e
1: 1,2,2,0,0 2,0,0,0,2 -0.3962995  0.9091728
2: 0,2,0,0,2 1,2,2,2,2 -2.5788875 -0.1007541
3: 0,1,1,0,0 2,0,1,1,0  0.7208587 -0.3362134
4: 1,0,2,0,2 0,1,1,0,2  0.6068573 -2.1755171
5: 1,0,0,0,0 2,2,2,1,2  0.2505764 -0.4038029
6: 2,2,1,1,1 2,0,0,1,0  0.1002509  0.9895424

В качестве альтернативы, вы можете добавить ошибку в последовательность 0,1,2:

d <- data.table( 
  v1 = lapply(1:n, function(x) c(sample(0:2, t, replace = T), rnorm(1) )),
  v2 = lapply(1:n, function(x) c(sample(0:2, t, replace = T), rnorm(1) ))
)

                                                                  v1
1:  2.0000000, 1.0000000, 1.0000000, 1.0000000, 0.0000000,-0.2246831
2: 1.00000000,2.00000000,2.00000000,0.00000000,2.00000000,0.08186215
3:             1.000000,1.000000,2.000000,0.000000,2.000000,1.409102
4:        1.000000, 1.000000, 2.000000, 0.000000, 2.000000,-0.706325
5:  2.0000000, 2.0000000, 0.0000000, 0.0000000, 0.0000000,-0.7605603
6:        1.000000, 0.000000, 0.000000, 2.000000, 0.000000,-1.805504
                                                                  v2
1:  1.0000000, 0.0000000, 2.0000000, 0.0000000, 0.0000000,-0.8190068
2:             0.000000,2.000000,2.000000,1.000000,1.000000,1.127785
3:                   1.00000,2.00000,0.00000,0.00000,0.00000,1.46689
4:        1.000000, 2.000000, 1.000000, 0.000000, 0.000000,-0.963522
5:             1.000000,1.000000,2.000000,0.000000,0.000000,1.122421
6:       2.0000000,0.0000000,0.0000000,1.0000000,2.0000000,0.8270646
...