簡體   English   中英

與Poisson家族和偏移一起運行gam時出錯

[英]Error when running a gam with poisson family and offset

我正在嘗試在R中運行游戲,但收到一條奇怪的錯誤消息。

通常,每采樣水量我都有一些計數,我想根據該計數進行校正。 我正在嘗試生成一個平滑函數,該函數適合作為深度函數的計數,並考慮了采樣量的差異。

test <- structure(list(depth = c(2.5, 7.5, 12.5, 17.5, 22.5, 27.5, 32.5, 
37.5, 42.5, 47.5, 52.5, 57.5, 62.5, 67.5, 72.5, 77.5, 82.5, 87.5, 
92.5, 97.5), count = c(53323, 665, 1090, 491, 540, 514, 612, 
775, 601, 497, 295, 348, 357, 294, 292, 968, 455, 148, 155, 101
), vol = c(2119.92, 111.76, 156.64, 71.28, 77.44, 73.92, 62.48, 
78.32, 74.8, 81.84, 53.68, 80.96, 80.08, 79.2, 79.2, 77.44, 77.44, 
84.48, 73.04, 59.84)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -20L), .Names = c("depth", "count", "vol"
))

gam(count ~ s(depth) + offset(vol), data = test, family = "poisson")
 Error in if (pdev - old.pdev > div.thresh) { : missing value where TRUE/FALSE needed 

知道為什么這行不通嗎? 如果我擺脫了偏移量,或者如果我設置family = "gaussian"該函數將按預期運行。

編輯:我發現

gam(count ~ s(depth) + offset(log(vol)), data = test, family = "poisson")

確實可以運行,而且我想我看到有說說要對它們的偏移量進行對數轉換的消息,所以也許這實際上是可以的。

您肯定需要將vol放在對數刻度上(對於此模型)。

更一般地,偏移量以鏈接函數的比例進入模型。 因此,如果您的模型使用family = poisson(link = 'sqrt') ,那么您希望將偏移offset(sqrt(vol))包含為offset(sqrt(vol))

我懷疑錯誤是由於在初始模型擬合的情況下vol值在對數刻度上而導致的似然度/距離中的一些溢出或差值引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM