2017-01-06 4 views
0

Я запускаю приведенный ниже код, чтобы сохранить значения AIC для отрицательного биномиального распределения в векторе.Ошибка в Fitdist in for loop

Файл данных доступна по адресу: https://www.dropbox.com/s/m5iqkmfacu257hh/SOFQ1.csv?dl=0

samples <- read.table(file.choose(), header = FALSE, sep = ",") 
nbinom_aic <- data.frame(NBINOM_AIC = numeric(0)) 
for(i in 1:336) { 
    a <- samples[, i] 
    d <- fitdist(a, distr = "nbinom") 
    nbinom_aic <- rbind(nbinom_aic, d$aic) 
} 

я получаю следующее сообщение об ошибке:

Ошибка в fitdist (а, р-= "nbinom"): функция MLE несостоявшимся для оценки параметров, с кодом ошибки 100

в дополнение:

производства 2: В sqrt (1/diag (V)): произведенные NaN 3: В cov2cor (varcovar) : diag (.) Имеет 0 или NA записей; нефинитный результат является сомнительной

Предупредительных сообщений: 1: В SQRT (Diag (varcovar)): Nans

Кроме того, выходной сигнал содержит только 62 значений, в то время как я ожидал 336 значений как у меня 336 наборов распределения

ответ

0

при добавлении отладки кода в вашем:

for(i in 1:336) { 
    a <- samples[, i] 
    print(i) 
    d <- fitdist(a, distr = "nbinom") 
    nbinom_aic <- rbind(nbinom_aic, d$aic) 
} 

Вы найдете свой код остановки на i=63

Теперь проверьте что данные выглядит следующим образом:

a <- samples[, 63] 
summary(a) 

Есть все 0s. Я думаю, что это причина, почему фиддист потерпел неудачу.

Чтобы обойти эту проблему, если вы хотите fitdist все столбцы, просто нужно проверить, есть ли только 1 уникальное значение, и это 0.

+0

Благодаря Sixiang ... это worked..removed все столбцы, которые было только 0s .. – RedDevil1112