2017-06-21 36 views
2

介紹伽瑪GLM:NaN的生產和分歧錯誤

我試圖構建雞蛋的量(質量)魚種羣的標本擋規取決於它的大小和年齡該車型GLM 。

因此,變量是:

  • eggW:奠定雞蛋的總質量,以連續和正可變範圍300和30000之間

  • fishW:魚的質量,連續正面,範圍在3到55之間。

  • age:1或2年。

沒有0的,沒有NA的。

在檢查並實現假設正常分佈可能不合適之後,我決定使用Gamma分佈。我之所以選擇Gamma,主要是因爲變量是正值和連續值,隨着值的增加變化越來越大,並且似乎有偏差,正如下圖所示。

eggW值的頻率分佈:enter image description here

fishW VS eggW:enter image description here

代碼

myglm <- glm(eggW ~ fishW * age, family=Gamma(link=identity), 
start=c(mean(data$eggW),1,1,1), 
maxit=100) 

我看到它之後添加的maxit因素建議上的一個帖子此頁面作爲glm.fit: algorithm did not converge錯誤的解決方案,並且工作正常。

我選擇與link=identity一起使用,因爲生物學術語對結果的解釋更加明顯和直接,而不是使用inverselog鏈接。

所以,上述結果的下一個消息中的代碼:

警告消息:
1:在日誌(ifelse(Y == 0,1,Y /畝)):NaN的 產生
2 :步長截斷由於重要的是,如果變量fishW被丟棄,只有年齡保持顯示沒有錯誤警告發散

如果使用log鏈接報告錯誤。

問題

如果我的模型設計背後的理由是可以接受的,我想知道爲什麼報道這些錯誤和如何解決或避免它們。無論如何,我將不勝感激任何批評或建議。

+0

請,你可以發佈'eggW'和'fishW'之間的關係? –

+0

第二個陰謀足夠了嗎? –

+1

伽瑪GLM與日誌的鏈接是相當解釋。 –

回答

0

您正在尋找確定基於魚正確的年齡和體重雞蛋的重量?我認爲你需要使用:

glm(eggW ~ fishW + age, family=Gamma(link=identity) 

而不是

glm(eggW ~ fishW * age, family=Gamma(link=identity) 
+0

至少在最初,我寧願建模充分互動。然而,即使我申請這個變化,我得到更多的警告(這兩個消息repetead 25倍和「算法沒有收斂」的錯誤)。 –

0
  1. 請問您的數據集有缺失值?
  2. 是你的變量高度相關?
  3. 打開fishW *年齡成一個單獨的列,只是傳遞到算法中
+0

1.無缺失值 2.頗有些correlaion: -fishW VS eggW 0.88 - eggW VS年齡0.58 -fishW VS 0.62年齡(斯皮爾曼指數) 3.如果我做同樣的錯誤報告這個分開。 –