Как получить объект lm из списка коэффициентов и перехватить в R - PullRequest
1 голос
/ 28 марта 2020

У меня есть список коэффициентов с перехватом, и я хотел бы создать объект R lm из них. Возможно ли это, и если да, то как?

1 Ответ

2 голосов
/ 28 марта 2020

Мы можем использовать y = intercept + slope * x, если мы знаем intercept и slope, а x - это некоторое значение, для которого мы хотим знать y. (Если у нас есть более одного предиктора, он работает аналогично.)

Выше очень просто, нам не нужен объект lm для этого, но если вам действительно нужен объект lm, тогда Поскольку линия определяется двумя точками, мы можем использовать эти две, которые следуют из приведенного выше уравнения.

  • x = 0, y = перехват
  • x = 1, y = перехват + slope

, поэтому для использования этих 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

Обновлен

Обновлен несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...