моделировать две коррелированные порядковые переменные в R

Я хотел бы смоделировать две коррелированные порядковые переменные в R. Обе переменные состоят из трех разных уровней (1/1,1/0,0/0), каждый из которых отбирается с фиксированной частотой 1 и 0 (скажем, 1 = 0,20;0=0,80). Частота трех уровней (1/1,1/0,0/0) для каждой переменной является переменной и зависит от корреляции между Var1 и Var2.

n=1000

rho=.70

Var1=sample(c(1/1,1/0,0/0),n,replace=T,prob=c(a,b,c))

Var2=?

cor(Var1,Var2)=rho

Как исправить пул 1 и 0, из которого выбираются уровни каждой переменной? Как смоделировать переменные, которые будут коррелированы на уровне ро? Что-то простое, например

rho*Var1+sqrt(1-rho^2)*Var2 

здесь не работает.

Большое спасибо за вашу помощь!


person 9987    schedule 17.01.2016    source источник
comment
Этот ответ должен вас приблизить. Порядковая переменная - это терминология SPSS, которая, ИМХО, неточна, по сути, вы будете заинтересованы в получении упорядоченного фактора.   -  person Konrad    schedule 17.01.2016
comment
проверьте этот пакет   -  person mtoto    schedule 17.01.2016
comment
Спасибо, @mtoto, я попробовал SimCorMultRes, но так и не понял, как варьировать частоту многономенклатурных уровней отклика по ро, фиксируя при этом частоту элементов (т.е. 1 и 0).   -  person 9987    schedule 17.01.2016


Ответы (1)


Корреляция для этих переменных не имеет смысла, так как они не упорядочены. Insted вы можете использовать 0,1,2 в качестве значений.

В этом случае это может помочь вам:

n=1000

rho=.70

Var1=sample(c(0,1,2),n,replace=T,prob=c(1/3,1/3,1/3))

index=sample(c(0,1),n,replace=T,prob=c(1-rho,rho))
index<-index==1
Var2=sample(c(0,1,2),n,replace=T,prob=c(1/3,1/3,1/3))

Var2[index]<-Var1[index]

  cor(Var1,Var2)
person Otto_K    schedule 17.05.2016