Я работаю над проблемой, где я хотел бы иметь двоичную переменную Z, которая является неправильно классифицированным или плохо измеренным прокси для A, только для некоторого уровня Y.
Я моделирую A и Yздесь:
set.seed(76)
n=10000
#generate correctly classified treatment A
a <- (rbinom(n, 1, 0.5))
#generate Y conditional on A
pry <- exp(-3 + 0.7*a )/(1+ exp(-1 + 0.7*a))
y <- 1*(runif(n)<=pry)
И затем сгенерируйте Z, который является ошибочно классифицированной версией A (в приведенном ниже примере Z захватывает 80% истинных положительных результатов)
#misclassify treatment A into Z
#such that treatment is only misclassified if Y=0
ifelse(y==1, z<-a,z<-(a==1)*(runif(n)<.80))
check<-xtabs(~a+z+y)
check
Я думал, что используяifelse здесь будет выполнять ошибочную классификацию A> Z только для случаев, когда Y был равен нулю, но просмотр «check» показывает этот вывод:
, , y = 0
z
a 0 1
0 4799 0
1 903 3821
, , y = 1
z
a 0 1
0 174 0
1 54 249
Указывает, что Z неправильно классифицирован как для Y = 1, так и для Y = 0.
Есть идеи как это исправить?