Есть ли R эквивалент функции ЛИНЕЙН в Excel? - PullRequest
2 голосов
/ 17 июня 2020

Мне нужно точно воспроизвести функцию Excel LOGEST в R, но я не могу найти способ сделать это без использования общей c оценки методом наименьших квадратов. Прежде чем я сам напишу собственный код, встречался ли кто-нибудь с такой вещью?

data <- 2:7

Желаемый результат (из функции ЛИНЕЙН Excel):

1.27730742  1.758076359

Ответы [ 2 ]

4 голосов
/ 17 июня 2020

Просто зарегистрируйте данные, выполните линейную регрессию, а затем увеличьте результаты.

result <- lm(log(data) ~ seq_along(data))
exp(result$coefficients)

(Я бы нашел это раньше, но у меня loge и log10 путались как дурак.)

EDIT: @ Rui Barradas любезно преобразовал это в функцию: вот она:

logest <- function(y, x, ...){
  if(missing(x) || is.null(x)) x <- seq_along(y)
  result <- lm(log(y) ~ x, ...)
  exp(coef(result))
}

data <- 2:7
logest(data)
#(Intercept)           x 
#   1.758076    1.277307
1 голос
/ 17 июня 2020

Этот ответ полностью основан на ответе пользователя @MattB.

logest <- function(y, x, ...){
  if(missing(x) || is.null(x)) x <- seq_along(y)
  result <- lm(log(y) ~ x, ...)
  exp(coef(result))
}

data <- 2:7
logest(data)
#(Intercept)           x 
#   1.758076    1.277307

В этом втором примере используются данные примера в ссылке на вопрос. Результаты совпадают с результатами, опубликованными там.

x <- 11:16
y <- c(33100, 47300, 69000, 102000, 150000, 220000)
logest(y, x)
#(Intercept)           x 
# 495.304770    1.463276
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...