如何从系数列表中获取lm对象并在R中截取



我有一个带截距的系数列表,我想从中创建一个Rlm对象。这可能吗?如果可能,怎么做?

如果我们知道截距和斜率,并且x是我们想要知道y的某个值,我们可以使用y=截距+斜率*x。(如果我们有多个预测器,它的工作原理类似。(

上面的内容很简单,我们并不真的需要lm对象来完成,但如果你真的想要lm对象,那么由于一条线是由两点决定的,我们可以使用这两点,这两点遵循上面的等式。

  • x=0,y=截距
  • x=1,y=截距+斜率

因此使用下面的fm是所需的lm对象。(如果我们有多个预测因子,那么考虑它们都为0的点,以及其中一个为1,其余为0的那些点。(

intercept <- 1; slope <- 2 # test data
y <- c(intercept, intercept + slope)
x <- 0:1
fm <- lm(y ~ x)
coef(fm)
## (Intercept)          x1          x2 
##           1           2           3 
# suppose we want to know y given x = 3. Here are two ways.
predict(fm, list(x = 3))
## 1 
## 7 
intercept + slope * 3
## [1] 7

以下是一个具有多个预测因子的示例:

b <- 1:3 # test data
# 1st row of X is all 0's; remaining rows each have one 1 and rest 0    
X <- diag(length(b))[, -1]
colnames(X) <- paste0("x", seq(ncol(X))) # x1, x2
y <- b[1] + c(0, b[-1])    
DF <- data.frame(y, X)
fm <- lm(y ~ ., DF)
predictors <- c(x1 = 3, x2 = 10)
predict(fm, as.list(predictors))
##  1 
## 37 
sum(b * c(1, predictors))
## [1] 37

已更新

已经更新了好几次。

最新更新