背景:物种丰富度可扩展到体重的负0.75。但是,当我适合我的数据时,我得到的值为0.57。一位朋友告诉我,摘要(lm)结果打印出数据的“最佳拟合”斜率。然而,我想知道我是否可以创建一个回归图,其中我像文献一样强迫斜率为-0.75。
我的代码是:
log.nspecies.dec = c(3.05,2.95,2.97,2.98,2.84,2.85,2.83,2.71,2.64,2.62,2.58,2.37, 2.26,2.17,2.00,1.88,1.75,1.62,1.36,1.30,1.08,1.20,0.90,0.30,0.70, 0.30,0.48,0.00,0.30,0.00)
logbio.dec = c(2.1,2.3,2.5,2.7,2.9,3.1,3.3,3.7,3.9,4.1,4.3,4.5,4.7,4.9,5.1, 5.3,5.5,5.7,5.9,6.1,6.3,6.5,6.7,7.9,7.1,7.3,7.5,7.7,7.9)
names(log.nspecies.dec)= logbio.dec
log.nspecies.dec = log.nspecies.dec [order(as.numeric(names(log.nspecies.dec)))]
xpos = barplot(log.nspecies.dec,las = 2,space = 0)
lm.fit = lm(log.nspecies.dec~as.numeric(names(log.nspecies.dec))) 摘要(lm.fit)
y.init = lm.fit $ coefficients [2] * as.numeric(names(log.nspecies.dec))1 + lm.fit $系数1
y.end = lm.fit $ coefficients [2] * as.numeric(names(log.nspecies.dec))[length(log.nspecies.dec)] + lm.fit $系数1
段(xpos 1,y.init,xpos [length(xpos)],y.end,lwd = 2,col ='red')
title(main ='ln物种数量〜lm体重')
coef(lm.fit)
答案 0 :(得分:0)
您可以使用offset
将y轴截距固定为负值。例如
## Example data
x = 1:10
y = -2 + 2* x
# Fit the model
(m = lm(y ~ 0 + x, offset = rep(-2, length(y))))
#Call:
#lm(formula = y ~ 0 + x, offset = rep(-2, length(y)))
#Coefficients:
#x
#2
输出正确地将渐变标识为2.
您的代码无效的原因是您使用的是abline()
。查看?abline
,它指出要绘制线条,它将依次调用coef(MODEL)
。使用偏移量时,coef
函数不会返回y轴截距。
R> coef(m)
x
2
因此abline
划错了界限。
如果截距发生变化,代码仍可正常工作
x = 1:10
y = 2 + 2*x
lm(y ~ 0 + x, offset = rep(2, length(y)))