R_U*_*ser 35 regression r linear-regression lm
我想用R中的lm()函数计算线性回归.另外我想得到一个回归的斜率,我明确地给出了截距lm().
我在互联网上找到了一个例子,我试图阅读R-help"?lm"(不幸的是我无法理解它),但我没有成功.谁能告诉我我的错误在哪里?
lin <- data.frame(x = c(0:6), y = c(0.3, 0.1, 0.9, 3.1, 5, 4.9, 6.2))
plot (lin$x, lin$y)
regImp = lm(formula = lin$x ~ lin$y)
abline(regImp, col="blue")
# Does not work:
# Use 1 as intercept
explicitIntercept = rep(1, length(lin$x))
regExp = lm(formula = lin$x ~ lin$y + explicitIntercept)
abline(regExp, col="green")
Run Code Online (Sandbox Code Playgroud)
感谢你的帮助.
NPE*_*NPE 39
您可以从回归中减去显式截距,然后拟合无拦截模型:
> intercept <- 1.0
> fit <- lm(I(x - intercept) ~ 0 + y, lin)
> summary(fit)
Run Code Online (Sandbox Code Playgroud)
在0 +抑制由截距的装配lm.
编辑要绘制拟合,请使用
> abline(intercept, coef(fit))
Run Code Online (Sandbox Code Playgroud)
PS模型中的变量看起来是错误的:它通常是y ~ x,不是x ~ y(即回归应该在左边,而回归在右边).
42-*_*42- 15
我看到你已经使用I()接受了一个解决方案.我曾经认为基于偏移()的解决方案会更加明显,但是品味会有所不同,在完成偏移解决方案后,我可以理解I()解决方案的经济性:
with(lin, plot(y,x) )
lm_shift_up <- lm(x ~ y +0 +
offset(rep(1, nrow(lin))),
data=lin)
abline(1,coef(lm_shift_up))
Run Code Online (Sandbox Code Playgroud)