R中的δ-对数正态GLM

时间:2014-05-06 11:54:51

标签: r glm delta

我正在尝试使用delta-lognormal GLM对分布进行建模。我的数据是丰富的(连续变量有10%的零aprox)和一系列解释变量,但到目前为止我一次尝试一个。

头(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):

dims [product 12000]与object [0]

的长度不匹配

知道这个错误代表什么以及如何修改它? 否则,你知道其他一些提供delta-lognormal GLM的包吗?

由于

LucíaLópez-López

1 个答案:

答案 0 :(得分:1)

Package Developer here:这是代码中的一个错误。我(愚蠢的)错误。现在修复了包25的版本(以及R-3.1.0)。请从现在开始使用它。

我在下面列出了一些示例代码,用于根据Lucia提供给我的数据进行调试。它包括上面提到的确切电话。

另一方面说明:您确定要使用delta log-normal模型吗?它们被包含在fishMod包中以获得“完整性”。我在下面的代码中添加了一个替代品,一个Tweedie GLM。根据数据和数据问题,您可能还需要考虑Poisson-gamma模型。有关详细信息,请参阅Foster和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.