Логарифмическая регрессия в R (шаг за шагом)


Логарифмическая регрессия — это тип регрессии, используемый для моделирования ситуаций, когда рост или спад сначала быстро ускоряются, а затем со временем замедляются.

Например, следующий график демонстрирует пример логарифмического распада:

Для такого типа ситуации взаимосвязь между переменной-предиктором и переменной-откликом можно хорошо смоделировать с помощью логарифмической регрессии.

Уравнение модели логарифмической регрессии принимает следующий вид:

у = а + b*ln(x)

куда:

  • y: переменная ответа
  • x: предикторная переменная
  • a, b: коэффициенты регрессии, описывающие взаимосвязь между x и y .

В следующем пошаговом примере показано, как выполнить логарифмическую регрессию в R.

Шаг 1: Создайте данные

Во-первых, давайте создадим поддельные данные для двух переменных: x и y :

x=1:15

y=c(59, 50, 44, 38, 33, 28, 23, 20, 17, 15, 13, 12, 11, 10, 9.5)

Шаг 2: Визуализируйте данные

Затем давайте создадим быструю диаграмму рассеяния , чтобы визуализировать взаимосвязь между x и y :

plot(x, y) 

Из графика видно, что существует четкая логарифмическая закономерность затухания между двумя переменными. Значение переменной отклика y сначала быстро уменьшается, а затем замедляется с течением времени.

Таким образом, кажется хорошей идеей подобрать уравнение логарифмической регрессии для описания взаимосвязи между переменными.

Шаг 3: Подберите модель логарифмической регрессии

Далее мы воспользуемся функцией lm() для подбора модели логарифмической регрессии, используя натуральный логарифм x в качестве предиктора и y в качестве переменной ответа.

#fit the model
model <- lm(y ~ log (x))
#view the output of the model
summary(model)

Call:
lm(formula = y ~ log(x))

Residuals:
 Min 1Q Median 3Q Max 
-4.069 -1.313 -0.260 1.127 3.122 

Coefficients:
 Estimate Std. Error t value Pr(>|t|) 
(Intercept) 63.0686 1.4090 44.76 1.25e-15 \*\*\*
log(x) -20.1987 0.7019 -28.78 3.70e-13 \*\*\*
---
Signif. codes: 0 ‘\*\*\*’ 0.001 ‘\*\*’ 0.01 ‘\*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.054 on 13 degrees of freedom
Multiple R-squared: 0.9845, Adjusted R-squared: 0.9834 
F-statistic: 828.2 on 1 and 13 DF, p-value: 3.702e-13

Общее значение F модели составляет 828,2, а соответствующее значение p чрезвычайно мало (3,702e-13), что указывает на то, что модель в целом полезна.

Используя коэффициенты из выходной таблицы, мы видим, что подобранное уравнение логарифмической регрессии:

у = 63,0686 – 20,1987 * ln(x)

Мы можем использовать это уравнение для прогнозирования переменной отклика y на основе значения переменной-предиктора x.Например, если x = 12, то мы предсказываем, что y будет 12,87 :

у = 63,0686 – 20,1987 * ln(12) = 12,87

Бонус: не стесняйтесь использовать этот онлайн- калькулятор логарифмической регрессии для автоматического вычисления уравнения логарифмической регрессии для заданного предиктора и переменной отклика.

Шаг 4. Визуализируйте модель логарифмической регрессии

Наконец, мы можем создать быстрый график, чтобы визуализировать, насколько хорошо модель логарифмической регрессии соответствует данным:

#plot x vs. y
plot(x, y)

#define x-values to use for regression line
x=seq(from= 1 ,to= 15 ,length. out = 1000 )

#use the model to predict the y-values based on the x-values
y=predict(model,newdata=list(x=seq(from= 1 ,to= 15 ,length. out = 1000 )),
 interval=" confidence ")

#add the fitted regression line to the plot (lwd specifies the width of the line)
matlines(x,y, lwd= 2 )

Мы видим, что модель логарифмической регрессии хорошо подходит для этого конкретного набора данных.

Дополнительные ресурсы

Как выполнить простую линейную регрессию в R
Как выполнить множественную линейную регрессию в R
Как выполнить квадратичную регрессию в R
Как выполнить экспоненциальную регрессию в R
Как выполнить полиномиальную регрессию в R