В этом посте я напишу о статистике и метриках линейной регрессии, чтобы вы, наконец, поняли весь вывод функции 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, поэтому я очень надеюсь, что он поможет вам так же, как помог бы мне, когда я его искал!

Читать далее

Первоначально опубликовано в моем блоге: http://flaviaerius.com