Рисование по условному биномиальному распределению на вектор из стандартного нормального распределения - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь смоделировать данные, где процесс генерирования данных имеет вид p (X, Y) = p (X) p (Z | X), где распределение двоичного Z зависит от значения X, которое генерируется изстандартное нормальное распределение.

X генерируется приведенным ниже кодом.

X <- rnorm(100, 0, 1)

Как бы я сгенерировал вектор Y, условный для X? Моей первоначальной мыслью было как-то сгенерировать вектор вероятностей P, используя X, а затем запустить приведенный ниже код, но это не удалось.

sapply(P,function(Y){rbinom(1,1,Y)})

1 Ответ

1 голос
/ 01 октября 2019

X будет варьироваться от -Inf до +Inf, поэтому не будет работать в качестве вероятности, необходимой для биномиального распределения, но pnorm(X) даст вам значения от 0 до 1, затем используйте операторы ifelse() для преобразованиязначения ниже .05 до .05 и выше .95 до .95:

X <- rnorm(100)   # 0, 1 are the default values
Xp <- pnorm(X)    # transform to probabilities
Xp <- ifelse(Xp < .05, .05, ifelse(Xp > .95, .95, Xp)) # Bound the results
vals <- rbinom(length(Xp), 1, Xp)  # Your binary values
...