您正在使用glm(...)
錯誤地做到這一點,國際海事組織是一個比抵消更大的問題。
最小二乘迴歸的主要基本假設是響應中的誤差正態分佈且方差不變。如果Y
中的錯誤是正態分佈的,那麼log(Y)
肯定不是。所以,雖然你可以在「log(Y)~X
」上運行數字,但結果並不會有意義。廣義線性建模理論被開發來處理這個問題。所以使用glm,而不是合適的log(Y) ~X
你應該適合Y~X
與family=poisson
。前者配合
日誌(Y)= B + B X
而後者配合
Y = EXP(B + B x)
在後一種情況下,如果Y
中的錯誤是正態分佈的,並且模型是有效的,那麼根據需要殘差將是正態分佈的。請注意,這兩種方法給出非常不同的結果對於b 和b 。
fit.incorrect <- glm(log(Y)~X,data=data2)
fit.correct <- glm(Y~X,data=data2,family=poisson)
coef(summary(fit.incorrect))
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 6.0968294 0.44450740 13.71592 0.0001636875
# X -0.2984013 0.07340798 -4.06497 0.0152860490
coef(summary(fit.correct))
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) 5.8170223 0.04577816 127.06982 0.000000e+00
# X -0.2063744 0.01122240 -18.38951 1.594013e-75
特別是,當使用正確的方法時,X
的係數減小了近30%。
通知如何型號而異:
plot(Y~X,data2)
curve(exp(coef(fit.incorrect)[1]+x*coef(fit.incorrect)[2]),
add=T,col="red")
curve(predict(fit.correct, type="response",newdata=data.frame(X=x)),
add=T,col="blue")
正確擬合(藍色曲線)的結果通過數據或多或少隨機,而不正確配合的結果嚴重高估小數據X
並低估大數據X
。我想知道這是爲什麼你要「修理」攔截。看另一個答案,你可以看到,當你修復Y = 300時,擬合低估了整個過程。
相比之下,我們來看看使用glm正確修復Y 會發生什麼。
data2$b0 <- log(300) # add the offset as a separate column
# b0 not fixed
fit <- glm(Y~X,data2,family=poisson)
plot(Y~X,data2)
curve(predict(fit,type="response",newdata=data.frame(X=x)),
add=TRUE,col="blue")
# b0 fixed so that Y0 = 300
fit.fixed <-glm(Y~X-1+offset(b0), data2,family=poisson)
curve(predict(fit.fixed,type="response",newdata=data.frame(X=x,b0=log(300))),
add=TRUE,col="green")
這裏,藍色的曲線是不受約束的配合(處理得當),綠色曲線擬合制約Ÿ = 300.你中央社看到,他們不很不同很多,因爲正確的(不受限制的)適合已經相當好了。
'模型< - LM(日誌(Y)〜X-1 +偏移(代表(日誌(300),nrow(DATA2))),DATA2)'; ?'predict' –
我想在這裏,我有:Y = AX + B, B =日誌(300), A = $模型係數? ,我有生物學背景,這一切都是新的,我#Thanks – Cherif