Использование пакета Simex для исправления ошибок измерения

Я пытаюсь использовать MCSIMEX-алгоритм для моделей ошибок измерения в пакете simex R, чтобы исправить ошибку в скрытом назначении классов. Существует 8 скрытых классов, и я использовал средние вероятности скрытых классов для наиболее вероятного членства в классе, чтобы создать матрицу ошибок, чтобы симексировать переменную классификации. Я реализовал анализ, используя соответствующие коды R из этого [примера] [1]. Когда я запустил анализ, я получил следующее сообщение об ошибке: «Ошибка в mcsimex (naive, mc.matrix = Data600, SIMEXvariable =« Class »): mc.matrix может содержать отрицательные значения для показателей меньше 1». Может ли кто-нибудь помочь с Я включил некоторые поддельные данные, чтобы дать вам представление о том, чего я пытаюсь достичь.

## Create Data set 
Y = sample(x=30:100, size = 500, replace= TRUE) ## Outcome variable
Class = sample(x=1:8, size=500, replace=TRUE) #Class membership variable
X2 = sample(x=0:100, size=500, replace=TRUE)## Control variable 
Data=cbind(Class, X2, Y)

Data2=as.data.frame(Data)

## Build matrix containing probabilities of most likely class membership
p6 <- matrix(c(0.852086,    0.002081,   0.145126,   0.000000,   0.000000,   0.000706,   0.000000,   0.000002,
               0.016235,    0.983277,   0.000453,   0.000034,   0.000000,   0.000001,   0.000000,   0.000000,
               0.001904,    0.000025,   0.992375,   0.000000,   0.000000,   0.005629,   0.000004,   0.000063,
               0.000010,    0.000001,   0.073121,   0.926070,   0.000002,   0.000001,   0.000793,   0.000001,
               0.000004,    0.000454,   0.005430,   0.025924,   0.926010,   0.040839,   0.000002,   0.001338,
               0.007274,    0.000003,   0.000294,   0.004842,   0.000000,   0.987587,   0.000000,   0.000000,
               0.000839,    0.325729,   0.270084,   0.001621,   0.000001,   0.000115,   0.401590,   0.000022,
               0.000000,    0.000000,   0.000750,   0.000000,   0.000000,   0.000013,   0.000000,   0.999237), 
             nrow = 8, byrow=FALSE)

check.mc.matrix(list(build.mc.matrix(p6)))


dimnames(p6) <- list(levels(Data2$Class),levels(Data2$Class))

## Check Data Structure 
str(Data2)

## Specify Class Variable as factor and other variables as numeric 
Data2$Class=as.factor(Data2$Class)

Data2$X2= as.numeric(Data2$X2)
Data2$Y= as.numeric(Data2$Y)

##Estimate Naive model 
naive=glm(Y ~., family=gaussian, data=Data2, x=T, y=T)

summary(naive)



##Model accounting for classification error
mod.Dis <- mcsimex(naive, mc.matrix = p6, SIMEXvariable = "Class")


  [1]: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.503.9789&rep=rep1&type=pdf

person Jonte Myers    schedule 20.02.2019    source источник
comment
Не могли бы вы добавить код, который вы использовали, что привело к ошибке?   -  person Heidi    schedule 08.03.2019
comment
@Heidi. Я обновил вопрос с помощью кода, который использовал. Спасибо.   -  person Jonte Myers    schedule 09.03.2019


Ответы (1)


Извините за задержку. Проблема заключается в вашей матрице:

вы используете build.mc.matrix() для проверки вашей матрицы, но вы используете «наивную» mc-матрицу для оценки.

Если вы построите исправленную mc-матрицу, все будет работать гладко:

new_mc_matrix <- build.mc.matrix(p6)
dimnames(new_mc_matrix) <- list(levels(Data2$Class),levels(Data2$Class))

mod.Dis <- mcsimex(naive, mc.matrix = new_mc_matrix, SIMEXvariable = "Class")

С наилучшими пожеланиями

Вольфганг

person Wolfgang    schedule 15.03.2019