проблем за оценка на смесен логит модел в R, винаги същите като първоначалните стойности

Работата е там, че имам широк набор от данни с липсващи стойности и променливата на отговора е двоична, ДА ИЛИ НЕ за отговора. Трябва да го оценя чрез смесен логически модел, така че първо приписвам данните чрез пакет с мишки. След това прехвърлете данните в клас mlogit.data, направете оценка от gmnl. Резултатът от приблизителните стойности винаги е почти същият като първоначалните стойности... Това изглежда е резултат от градиента, който е близо до 0, така че изобщо няма оптимизация.

Използвам други по-прости данни от домашна работа (така че не е проблемът в данните според мен), за да проверя как върви. Странното е, че изтривам някои стойности от него, правя импутация, оценка, същия резултат, което означава, че може да има нещо нередно в импутацията? Но използването на оригиналния набор от данни без липсващи стойности дава същия резултат. В този случай просто чета данни, прехвърлям ги в клас mlogit, правя оценка, всичко чрез вградени функции в R. Какво може да не е наред? Сега съм напълно объркан и отчаян.

Има ли някой да ми помогне по въпроса? Оценявам всяка помощ и дискусия.

Простите данни изглеждат така: липсващите

Кодът е:

# use data having missing values
data1   <- read.table("train_Titanic.csv", sep = ",", header = T) 

data1$Pclass <- as.factor(data1$Pclass)
data1$Male <- as.logical(data1$Male)
data1$SibSp <- as.factor(data1$SibSp)
data1$Parch <- as.factor(data1$Parch)

part <- data1[,3:8]
imputed <- mice(part,m=7,maxit = 2)
part2 <- complete(imputed,1)
data_imputed <- cbind(data1[,1:2],part2)

data_imputed <- na.exclude(data_imputed) # drop the data without response
reg_missing <- mlogit.data(data_imputed,choice = "Survived",shape = "wide",id.var = "PassengerId")
model_missing <- gmnl(Survived ~ Pclass+Male+SibSp+Parch+Age+Fare
              | 1,
              data = reg_missing,
              model = "mixl", 
              reflevel = 2, 
              haltons = NA, 
              R = 150, 
              panel = TRUE,
              print.init = TRUE, 
              print.level = 2,
              ranp = c(Age = "n"),
              correlation = FALSE,
              iterlim = 500,
              method = "bhhh",)

# use the original data having no missing values
data2 <- read.table("train_Titanic(1).csv", sep = ",", header = T) # Load whole data
reg_nomissing <- mlogit.data(data2,choice = "Survived",shape = "wide",id.var = "PassengerId")
model_nomissing <- gmnl(Survived ~ Pclass+Male+SibSp+Parch+Age+Fare
                    | 1,
                    data = reg_nomissing,
                    model = "mixl", 
                    reflevel = 2, 
                    haltons = NA, 
                    R = 150, 
                    panel = TRUE,
                    print.init = TRUE, 
                    print.level = 2,
                    ranp = c(Age = "n"),
                    correlation = FALSE,
                    iterlim = 500,
                    method = "bhhh")

Резултатът за model_nomissing е (първият е подобен):

Starting Values:
0:(intercept)        Pclass          Male         SibSp         Parch          Fare           Age        sd.Age 
   0.37776251   -0.03504190   -0.01583640   -0.01261044   -0.01048478   -0.74403561   -0.49059713    0.10000000 
Estimating MIXL model 
----- Initial parameters: -----
fcn value: -405.3734 
                parameter initial gradient free
0:(intercept)  0.37776251     4.710893e-11    1
Pclass        -0.03504190     2.170486e-14    1
Male          -0.01583640     4.385381e-15    1
SibSp         -0.01261044     5.162537e-15    1
Parch         -0.01048478     5.884182e-15    1
Fare          -0.74403561     5.500045e-13    1
Age           -0.49059713     1.878497e-13    1
sd.Age         0.10000000    -6.589781e-16    1
Condition number of the (active) hessian: 2.489843e+32 
-----Iteration 1 -----
--------------
gradient close to zero 
1  iterations
estimate: 0.3777625 -0.0350419 -0.0158364 -0.01261044 -0.01048478 -0.7440356 -0.4905971 0.1 
Function value: -405.3734 

Благодаря ви, че прочетохте.


person Lily    schedule 04.12.2018    source източник


Отговори (1)


Просто установявам, че правя нещо нередно, трябва да създам Wide Panel Data от Wide Format, да накарам атрибути като A1 да имат A1.1, A1.2.

Но проблемът все още съществува, крайните стойности са същите като първоначалните.

person Lily    schedule 04.12.2018