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

Для такого типа ситуации взаимосвязь между переменной-предиктором и переменной-откликом можно хорошо смоделировать с помощью логарифмической регрессии.
Уравнение модели логарифмической регрессии принимает следующий вид:
у = а + 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