В этом посте я напишу о статистике и метриках линейной регрессии, чтобы вы, наконец, поняли весь вывод функции summary()
R, примененной к объекту lm()
, очень практичным способом.
Отказ от ответственности. Я НЕ статистик, поэтому всем статистикам приношу извинения за неправильное использование термина. Мое намерение состоит в том, чтобы дать людям интерпретировать их собственные регрессионные модели и понять, что происходит с их данными на практике.
О линейной регрессии
Есть два основных применения линейной регрессии: статистический вывод и предсказание.
В строке статистического вывода выполняется линейная регрессия, чтобы найти взаимосвязь между зависимой непрерывной переменной и одной или несколькими переменными любого типа (непрерывными или категориальными). Затем вы можете объяснить взаимосвязь между переменными.
С точки зрения прогнозирования регрессия является частью обучения с учителем, типа машинного обучения, и может использоваться для прогнозирования новых данных на основе взаимосвязи, обнаруженной между двумя переменные.
Эти два подхода не исключают друг друга, их можно использовать вместе. Вы можете как объяснить взаимосвязь между переменными, так и использовать свою модель для прогнозирования с новыми входными данными.
Чтобы лучше понять эту разницу, я рекомендую это краткое обсуждение в Nature и пример данных RNA-seq, особенно первые четыре абзаца.
Что касается предварительных предположений для выполнения линейной модели, таких как линейность и нормальность переменных, в основном это очень обсуждаемая тема среди статистиков и специалистов по данным. Что касается машинного обучения, предположения не имеют большого значения, если модель имеет хорошее применение для прогнозирования интересующей переменной. А со стороны логического вывода предположения более важны для правильного вывода модели, но они не высечены на камне. Например, ненормально распределенные переменные могут хорошо работать в t-тесте или линейной регрессии для большого размера выборки. В то же время, чтобы выполнить линейную регрессию на данных экспрессии генов из RNA-seq, в данных делается несколько преобразований, чтобы они могли быть нормальными, линейными и гомоскедастическими.
Как я уже сказал, это очень обсуждаемая тема, и я предлагаю вам больше узнать о вашей области применения, чтобы решить, следует ли вам проверять предположения или нет. В этом посте я не буду погружаться в предположения.
Запуск линейной регрессии
Прежде всего, нам нужен анализ.
Мы будем использовать самый классический набор данных R: mtcars
. Он содержит такие показатели, как вес, количество миль на галлон, количество цилиндров и т. д. для 32 моделей автомобилей 1974 года. Вы можете подробнее изучить набор данных, набрав ?mtcars
в консоли R.
Давайте проверим распределение переменных в целом:
summary(mtcars) mpg cyl disp hp Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5 Median :19.20 Median :6.000 Median :196.3 Median :123.0 Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0 Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0 drat wt qsec vs Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000 Median :3.695 Median :3.325 Median :17.71 Median :0.0000 Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000 Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000 am gear carb Min. :0.0000 Min. :3.000 Min. :1.000 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000 Median :0.0000 Median :4.000 Median :2.000 Mean :0.4062 Mean :3.688 Mean :2.812 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000 Max. :1.0000 Max. :5.000 Max. :8.000
Все они числовые, но am
и vs
кажутся двоичными, а некоторые кажутся категориальными, как carb
и cyl
.
В нашем анализе, чтобы продемонстрировать показатели и статистику линейной регрессии, наш вопрос будет следующим:
Влияет ли вес автомобиля на то, сколько миль он может проехать на одном галлоне бензина?
Чтобы ответить на этот вопрос, мы будем использовать предиктор (независимая переменная) вес или wt
и прогнозируемую (зависимая переменная) миль на галлон или mpg
.
Подгоняем модель:
fit <- lm(mpg ~ wt, mtcars)
Чтобы получить всю статистику и некоторые метрики для нашей модели, нам нужно использовать функцию summary()
в R.
summary(fit) Call: lm(formula = mpg ~ wt, data = mtcars) Residuals: Min 1Q Median 3Q Max -4.5432 -2.3647 -0.1252 1.4096 6.8727 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 37.2851 1.8776 19.858 < 2e-16 *** wt -5.3445 0.5591 -9.559 1.29e-10 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 3.046 on 30 degrees of freedom Multiple R-squared: 0.7528, Adjusted R-squared: 0.7446 F-statistic: 91.38 on 1 and 30 DF, p-value: 1.294e-10
Итак, у нас есть этот океан информации, и как мы можем ответить на наш вопрос? значение p низкое, и все три звезды для коэффициентов, это кажется хорошим.
Давайте посмотрим один за другим, в порядке появления в выводе summary(fit)
.
Метрики и статистика
В то время как показатели — это значения для измерения эффективности всей модели, статистика — это коэффициенты проверки гипотез и оценки каждой переменной. Ниже они будут объяснены.
Чтобы визуализировать некоторые части объяснения, график линейной регрессии будет проиллюстрирован ниже.
1. Остатки
# Residuals: # Min 1Q Median 3Q Max # -4.5432 -2.3647 -0.1252 1.4096 6.8727
Термин остаточный был придуман потому, что руководитель фармацевтической промышленности не хотел признавать наличие ошибки в своих данных при отправке их в FDA (вы можете найти эту информацию на странице 239 книги The Lady Tasting Tea). ). Итак, да, это ошибки вашей модели. Не то чтобы что-то не так, но подобранная линия не идеальна, есть отклонения от ваших реальных данных, потому что другие факторы и случайность также влияют на вашу прогнозируемую переменную (mpg
). Эти отклонения являются остатками.
Они рассчитываются путем вычитания прогнозируемых данных из наблюдаемых данных. В нашем случае предсказанные (полученные с помощью модели) мили на галлон минус наблюдаемые (из mtcars
) миль на галлон.
Чтобы увидеть их все, вместо сводки запустите:
resid(fit) Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive -2.2826106 -0.9197704 -2.0859521 1.2973499 Hornet Sportabout Valiant Duster 360 Merc 240D -0.2001440 -0.6932545 -3.9053627 4.1637381 Merc 230 Merc 280 Merc 280C Merc 450SE 2.3499593 0.2998560 -1.1001440 0.8668731 Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental -0.0502472 -1.8830236 1.1733496 2.1032876 Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla 5.9810744 6.8727113 1.7461954 6.4219792 Toyota Corona Dodge Challenger AMC Javelin Camaro Z28 -2.6110037 -2.9725862 -3.7268663 -3.4623553 Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa 2.4643670 0.3564263 0.1520430 1.2010593 Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E -4.5431513 -2.7809399 -3.2053627 -1.0274952
Можно исследовать остатки, проверяя их на наличие некоторых предположений о линейной регрессии и скрытых закономерностей в данных. Это очень длинная тема, поэтому она будет оставлена для другого поста.
2. Коэффициенты
В целом, коэффициенты содержат информацию о предикторах вашей зависимой переменной. Ниже вы можете увидеть подробное объяснение.
# Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 37.2851 1.8776 19.858 < 2e-16 *** # wt -5.3445 0.5591 -9.559 1.29e-10 ***
а. Перехват
Перехват — это среднее значение y, когда x равно 0 в нашей модели. В нашем примере сколько миль в среднем уходит на галлон для автомобиля с ноль-фунтами. Также представлен как β0 в уравнении линейной регрессии:
y = β0 + β1x + ε
В нашем примере это вообще не имеет смысла. Нет машины с 0 фунтов. Поэтому мы можем просто игнорировать его и интерпретировать интересующий коэффициент β1.
b. wt
Представляемый именем переменной, это угловой коэффициент β1. Он представляет собой наклон линии на графике линейной регрессии. Это то, насколько y увеличивается или уменьшается с увеличением одной единицы x. В нашем примере это то, на сколько миль на галлон уменьшается (отрицательная оценка = -5,3) с увеличением на каждые 1000 фунт веса (единица измерения веса) автомобиля.
Столбцы для коэффициентов:
И. Оценка
Оценки представляют собой сами по себе значения β0 (Intercept
) и β1 (wt
). Объяснение их выше.
II. Стандартная ошибка
Стандартная ошибка — это отклонение оценки от ее реального значения. Чем меньше это значение, тем точнее оценка. Он имеет тенденцию быть меньше, если у вас большое количество наблюдений, поскольку это стандартное отклонение, деленное на n.
III. значение
Это значение t в критерии Стьюдента для одной выборки. Проверяется альтернативная гипотеза: отличается ли ваша оценка от нуля?, которая основана на распределении ваших данных как t-распределении, которое очень близко к нормальному распределению. Он рассчитывается как Estimate/Std Error.
IV. Pr(>|t|)
Это значение p для t-критерия, примененного к вашей оценке. Если оно меньше рассматриваемой альфы — ошибки, которую вы принимаете (обычно 0,05), — то вы можете сказать, что ваши оценки, скорее всего, будут значительными.
3. Значение. коды
Это просто легенда того, что означают звездочки и точки относительно уровня значимости значений p.
4. Степени свободы
# 30 degrees of freedom
Степени свободы (DF) — это количество единиц ваших данных, которые «могут варьироваться».
На практике это количество наблюдений за вычетом количества оценочных параметров, используемых в вашей модели (в данном случае — точки пересечения и веса). Это означает, что он прямо пропорционален количеству выборок и обратно пропорционален количеству параметров и переменных в вашем анализе. Степени свободы имеют решающее значение для определения вашей формы распределения t и того, какова будет значимость (значение p) оценок.
5. Остаточная стандартная ошибка
# Residual standard error: 3.046
Остаточная стандартная ошибка (RSE) – это среднее отклонение прогнозируемых значений (из модели) от наблюдаемых значений (в вашем наборе данных).
Его можно рассчитать с помощью:
y <- mtcars$mpg y_hat <- predict(fit) df <- 30 # degrees of freedom sqrt(sum((y - y_hat)^2)/df) [1] 3.045882
Статистически говоря, это оценка стандартного отклонения прогнозируемых значений от реальных значений; мера вариации вокруг линии регрессии.
Доверительные интервалы вокруг прогнозируемых значений генерируются с использованием RSE, поэтому это важная метрика вашей модели. Большой RSE может давать неточные прогнозы.
6. Множественный R-квадрат
# Multiple R-squared: 0.7528
Это знаменитый R в квадрате (R²). Доля дисперсии вашей зависимой переменной y, которая объясняется вашей моделью. Упрощение: объяснение доли дисперсии.
Поскольку это пропорция, ее значение находится в диапазоне от 0 до 1.
Наша модель объясняет 75% разницы в милях на галлон.
Это не означает, что если у вас, например, R² = 0,3, у вас плохой регрессионный анализ. Некоторые переменные лишь частично объясняются проанализированным предиктором, и если вы намерены интерпретировать влияние предиктора в переменной отклика, это может быть полезно даже при объяснении низкой дисперсии. Это происходит в геномике, например, с полигенными баллами, когда анализируемая вами генетика объясняет только часть признака или болезни, а остальное объясняется другими факторами, такими как окружающая среда.
Кроме того, это не лучший способ проанализировать, хороша ваша модель или нет. RMSE
(среднеквадратичная ошибка), который просто возводит в квадрат остатки, усредняет их и извлекает квадратный корень, как правило, является лучшим способом оценить, является ли ваша модель менее подверженной ошибкам. Чем меньше RMSE, тем лучше ваша модель.
RMSE <- sqrt(mean(resid(fit)^2)) RMSE [1] 2.949163
Это означает, что в среднем в нашей модели ошибка составляет 2,9 мили на галлон.
Имейте в виду то, что всегда повторяет мой босс: «Все модели ошибочны, но некоторые из них полезны» — классическая фраза Джорджа Бокса.
7. Скорректированный R-квадрат
# Adjusted R-squared: 0.7446
Когда в вашей линейной регрессии есть более одного предиктора (множественная линейная регрессия), всегда происходит увеличение R² независимо от увеличения объясненной дисперсии, просто из-за добавления нового предиктора. Поэтому значение R² скорректировано для этого.
Чтобы сравнить несколько моделей линейной регрессии или моделей с разным количеством предикторов, рекомендуется проверять скорректированный R-квадрат вместо множественного R-квадрата для объяснения дисперсии.
8. F-статистика
# F-statistic: 91.38 on 1 and 30 DF
F — статистика F-теста, выполненного в вашей модели. В основном значение F используется, чтобы увидеть, есть ли какая-либо связь между ответом и предикторами в множественной линейной регрессии. В обсуждаемом здесь примере простой линейной регрессии оценка β1 = 0 является лучшим способом сказать, что между ответом и предиктором нет связи.
9. p-значение
# p-value: 1.294e-10
Это p-значение F-теста, которое говорит вам, является ли ваш F-тест значимым. Значение p ниже выбранной вами альфы (например, 0,05) означает, что существует высокая вероятность того, что по крайней мере один из ваших предикторов в значительной степени связан с вашей зависимой переменной. Он больше используется для моделей множественной регрессии, к которым можно обратиться в другом сообщении в блоге.
Проблемы интерпретации
Некоторые преобразования можно использовать в линейной регрессии, чтобы сделать вашу модель более понятной.
Например, предположим, что вы, как и я, не из страны, в которой в качестве меры веса используются фунты, ни мили для измерения расстояния, ни галлоны. для первого тома.
Вместо этого вы хотели бы интерпретировать свою модель, используя килограммы, километры и литры. Это возможно?
Да!
Используя оператор I()
вокруг терминов линейной регрессии, чтобы вы могли преобразовать изнутри функции lm()
, мы можем преобразовать термины и получить правильную интерпретацию. См. ниже:
miles_to_kilometers <- 1.61 gallons_to_liters <- 3.79 lb_to_kg <- 0.45 fit_not_english <- lm(I(mpg*miles_to_kilometers/gallons_to_liters) ~ I(wt*lb_to_kg), mtcars) summary(fit_not_english) Call: lm(formula = I(mpg * miles_to_kilometers/gallons_to_liters) ~ I(wt * lb_to_kg), data = mtcars) Residuals: Min 1Q Median 3Q Max -1.92994 -1.00453 -0.05318 0.59878 2.91954 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 15.8388 0.7976 19.858 < 2e-16 *** I(wt * lb_to_kg) -5.0452 0.5278 -9.559 1.29e-10 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 1.294 on 30 degrees of freedom Multiple R-squared: 0.7528, Adjusted R-squared: 0.7446 F-statistic: 91.38 on 1 and 30 DF, p-value: 1.294e-10
Интерпретация такова:
- На каждую 1000 кг увеличения веса автомобиля приходится снижение на 5 километров на литр.
Сейчас намного лучше, правда?
;)
Заключительные замечания
Надеюсь, вам понравился этот пост, и он пролил свет на то, как интерпретировать выходные данные регрессионных моделей из R.
Мне очень не хватало этого контента, когда я применяла линейную регрессию в R, поэтому я очень надеюсь, что он поможет вам так же, как помог бы мне, когда я его искал!
Читать далее
- Глава 3.2 книги Введение в статистическое обучение (второе издание) — вы можете выбрать версию R или Python для скачивания бесплатно.
- Курс Coursera по регрессионным моделям от Джона Хопкинса бесплатный контент GitHub.
Первоначально опубликовано в моем блоге: http://flaviaerius.com