дельта-логнормальный GLM

Я пытаюсь смоделировать распределение, используя дельта-логнормальный GLM. Мои данные — это изобилие (непрерывная переменная с примерно 10% нулей) и ряд независимых переменных, но пока я пытаюсь использовать их по одной.

head(data.file)

DENSITY    DEPTH  LONGITUDE LATITUDE  ...(ncol=8)

14.029843    172   9.325000  41.97000    
 8.557391    251   9.367333  42.33000  
17.235731    251   9.367333  42.33000    
37.262910    146   9.159500  42.30300    
19.829688    185   9.238333  42.31900   
... (nrow=12000)

Я нашел только один пакет, обеспечивающий такой анализ, fishMod. Я попробовал команду deltaLN() со следующим результатом.

deltaLN(DENSITY ~ DEPTH, ~DEPTH, data=data.file)

Ошибка в deltaLN(DENSITY ~ DEPTH, ~DEPTH, data=data.file): размеры [продукт 12000] не соответствуют длине объекта [0]

Есть идеи, что означает эта ошибка и как ее исправить? В противном случае, знаете ли вы о каком-то другом пакете, который предоставляет дельта-логнормальный GLM?


person user3607991    schedule 06.05.2014    source источник


Ответы (1)


Package Developer здесь: это ошибка в коде. Моя (глупая) ошибка. Теперь это исправлено для версии 25 пакета (и для R-3.1.0). Пожалуйста, используйте это с этого момента.

Ниже я включил пример кода для отладки на основе данных, предоставленных мне Люсией. Он включает в себя точный вызов, упомянутый выше.

Еще одно замечание: вы уверены, что хотите использовать дельта-логнормальные модели? Они были включены в пакет fishMod для «полноты». Я включил альтернативу в код ниже, Tweedie GLM. В зависимости от данных и вопроса о данных вы также можете рассмотреть гамма-модели Пуассона. Подробнее см. Foster and Bravington (2013) Environ Ecol Stat (2013) 20:533-552. Это документ, описывающий методы в fishMod.

data.file <- read.csv("~/Desktop/data.file.csv") #will need to change on your machine

par( mfrow=c(1,3))

with( data.file, plot( DEPTH, DENSITY, pch=20, main="Raw Data"))
with( data.file, lines( lowess( DEPTH, DENSITY), col="red"))

require( fishMod)
fm.dln <- deltaLN( ln.form= DENSITY~DEPTH, binary.form=~DEPTH, data=data.file)
plot( fm.dln$fitted, fm.dln$residuals[,"quantile"], pch=20, main="Delta Log-Normal quantile residuals")
abline( h=0, col="red")

fm.Tweedie <- tglm( DENSITY~DEPTH, data=data.file)  #estimate power param too!
plot( fm.Tweedie$fitted, fm.Tweedie$residuals[,"random"], pch=20, main="Tweedie GLM Randomised quantile residuals")
abline( h=0, col="red")

#Tweedie has slightly better residuals, slightly only though.

example.model <- deltaLN(DENSITY ~ DEPTH, ~DEPTH, data=data.file) #to check the original problem, very directly.
person Scott Foster    schedule 06.05.2014
comment
Как вы наносите предсказанные значения y этой модели на исходные значения x? - person Johnny5ish; 21.02.2021