2017-01-05 26 views
0

Я работаю над моделью отклонения потерь в R (новичок) и хочу оценить некоторые параметры из набора данных с тремя столбцами (значения потерь/усиления (как непрерывные, так и столбцы с решениями, закодированными как 0 или 1 (двоичные)) dropbox.com/s/fpw3obrqcx8ld1q/GrandAverage.RData?dl=0 Часть кода, если им нужно использовать для этого Я использую приведен ниже:Ошибка MLE в R: конечное конечное разностное значение/значение в 'vmmin' не является конечным

set <- GrandAverage[, 5:7]; 
    Beh.Parameters <- function (lambda, alpha, temp) { 
u = 0.5 * set$Gain^alpha + 0.5 * lambda * set$Loss^alpha 
    GambleProbability <- 1/(1 + exp(-temp * u)) 

    loglike <- set$Decision*log(GambleProbability) + 
    (1- set$Decision)*log(1-GambleProbability) 

    return(-sum(loglike)) 
} 

    temp_s <- 0.1 #runif(1, 0.1, 1) 

    ML.estim1 <- mle(Beh.Parameters, start = list (lambda = 1, alpha = 1, temp = temp_s), nobs = length(set$Decision)) 
    ML.estim2 <- mle(Beh.Parameters, start = list(lambda = 0.1, alpha = 0.1, temp = temp_s), nobs = length(set$Decision)) 

Я использую MLE функцию для того, чтобы оценить параметры 3 (лямбда, альфа и TEMP), без альфа я получить этот вывод, например:

ML.estim1 вызовов: MLE (minuslogl = Beh.Parameters, начало = список (лямбда = 1, временные = temp_s), Nobs = длина (комплект $ Решение)) Коэффициенты: лямбда темп 1,298023 1.041057

когда я пытаюсь запустить его без параметра альфа он работает нормально, но когда я включаю его, я получил эти две ошибки:

Ошибка в Optim (старт, F, метод = метод, мешковины = TRUE, ...): Неограниченное конечное разностное значение [2] (для первого MLE) Ошибка в optim (start, f, method = method, hessian = TRUE, ...): начальное значение Значение в 'vmmin' не является конечным (для второго MLE)

Я попытался перекодировать матрицу, сингулярное разложение, BFGS и т.д. Любая помощь приветствуется ... спасибо заранее.

+0

Ваша ссылка для удаления ссылки не работает – csgillespie

+1

https://www.dropbox.com/s/fpw3obrqcx8ld1q/GrandAverage.RData?dl=0 – Oesj

+0

мой плохой ... и теперь? – Oesj

ответ

2

Ваш отрицательный Loss. В R, поднимая отрицательные значения до дробной мощности (то есть set$Loss^alpha, где alpha является нецелым) возвращает значения NaN. (Единственная общая альтернатива - вернуть комплексный ответ, который вам, вероятно, не нужен.) Вы имели в виду код Loss как положительный, а не отрицательный? Или, может быть, вы хотите -abs(set$Loss^alpha)?

В качестве общего кончике отладки цели, она помогает добавить

cat(lambda,alpha,temp,-sum(loglike),"\n") 

как второй к последней строке вашей целевой функции, чтобы вы могли лучше видеть, что происходит.

+0

@ Бен Болкер благодарит вас за это. Не знаю, переписывает ли переменную потерь смысл, но плохо дайте ей попробовать – Oesj

+0

все еще нет правильного выхода ...- abs (set $ Loss^alpha), похоже, вызывает ту же ошибку. Есть ли способ преобразовать положительные/отрицательные переменные в положительную область или что-то в этом роде? – Oesj

 Смежные вопросы

  • Нет связанных вопросов^_^