Я даю коды в R только для примера, вы можете просто увидеть ответы, если у вас нет опыта работы с R. Я просто хочу привести несколько примеров.
корреляция против регрессии
Простая линейная корреляция и регрессия с одним Y и одним X:
Модель:
y = a + betaX + error (residual)
Допустим, у нас есть только две переменные:
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
plot(X,Y, pch = 19)
На диаграмме рассеяния чем ближе точки лежат к прямой линии, тем сильнее линейная связь между двумя переменными.
Давайте посмотрим линейную корреляцию.
cor(X,Y)
0.7828747
Теперь линейная регрессия и отступ R значения в квадрате .
reg1 <- lm(Y~X)
summary(reg1)$r.squared
0.6128929
Таким образом, коэффициентами модели являются:
reg1$coefficients
(Intercept) X
2.2535971 0.7877698
Бета для X составляет 0,7877698. Таким образом, наша модель будет:
Y = 2.2535971 + 0.7877698 * X
Квадратный корень значения R-квадрата в регрессии такой же, как r
в линейной регрессии.
sqrt(summary(reg1)$r.squared)
[1] 0.7828747
Давайте посмотрим, как влияет масштаб на наклон регрессии и корреляцию, используя тот же самый пример и умножим его X
на постоянное число 12
.
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
X12 <- X*12
cor(X12,Y)
[1] 0.7828747
Корреляции остаются неизменными , как это делают R-квадрат .
reg12 <- lm(Y~X12)
summary(reg12)$r.squared
[1] 0.6128929
reg12$coefficients
(Intercept) X12
0.53571429 0.07797619
Вы можете видеть измененные коэффициенты регрессии, но не R-квадрат. Теперь другой эксперимент позволяет добавить константу X
и посмотреть, как это повлияет.
X = c(4,5,8,6,12,15)
Y = c(3,6,9,8,6, 18)
X5 <- X+5
cor(X5,Y)
[1] 0.7828747
Корреляция до сих пор не изменилась после добавления 5
. Посмотрим, как это повлияет на коэффициенты регрессии.
reg5 <- lm(Y~X5)
summary(reg5)$r.squared
[1] 0.6128929
reg5$coefficients
(Intercept) X5
-4.1428571 0.9357143
R-квадрат и корреляция не имеет эффекта масштаба , но перехватывать и наклон делать. Таким образом, наклон не совпадает с коэффициентом корреляции (если переменные не стандартизированы со средним 0 и дисперсией 1).
Что такое ANOVA и почему мы делаем ANOVA?
ANOVA - это метод, в котором мы сравниваем отклонения для принятия решений. Переменная ответа (называемая Y
) является количественной переменной, в то время как X
может быть количественной или качественной (фактор с различными уровнями). Оба X
и Y
могут быть один или несколько в количестве. Обычно мы говорим ANOVA для качественных переменных, ANOVA в контексте регрессии менее обсуждается. Может быть, это может быть причиной вашего замешательства. Нулевая гипотеза в качественной переменной (факторы, например, группы) состоит в том, что среднее для групп не отличается / не равно, в то время как в регрессионном анализе мы проверяем, значительно ли наклон линии отличается от 0.
Давайте рассмотрим пример, в котором мы можем выполнить как регрессионный анализ, так и качественный фактор ANOVA, поскольку X и Y являются количественными, но мы можем рассматривать X как фактор.
X1 <- rep(1:5, each = 5)
Y1 <- c(12,14,18,12,14, 21,22,23,24,18, 25,23,20,25,26, 29,29,28,30,25, 29,30,32,28,27)
myd <- data.frame (X1,Y1)
Данные выглядят следующим образом.
X1 Y1
1 1 12
2 1 14
3 1 18
4 1 12
5 1 14
6 2 21
7 2 22
8 2 23
9 2 24
10 2 18
11 3 25
12 3 23
13 3 20
14 3 25
15 3 26
16 4 29
17 4 29
18 4 28
19 4 30
20 4 25
21 5 29
22 5 30
23 5 32
24 5 28
25 5 27
Теперь мы делаем регрессию и ANOVA. Первая регрессия:
reg <- lm(Y1~X1, data=myd)
anova(reg)
Analysis of Variance Table
Response: Y1
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 684.50 684.50 101.4 6.703e-10 ***
Residuals 23 155.26 6.75
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
reg$coefficients
(Intercept) X1
12.26 3.70
Теперь обычное значение ANOVA (среднее значение ANOVA для фактора / качественной переменной) путем преобразования X1 в коэффициент.
myd$X1f <- as.factor (myd$X1)
regf <- lm(Y1~X1f, data=myd)
anova(regf)
Analysis of Variance Table
Response: Y1
Df Sum Sq Mean Sq F value Pr(>F)
X1f 4 742.16 185.54 38.02 4.424e-09 ***
Residuals 20 97.60 4.88
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Вы можете видеть измененный X1f Df, который равен 4 вместо 1 в приведенном выше случае.
В отличие от ANOVA для качественных переменных, в контексте количественных переменных, где мы проводим регрессионный анализ - дисперсионный анализ (ANOVA) состоит из расчетов, которые предоставляют информацию об уровнях изменчивости в рамках регрессионной модели и образуют основу для тестов значимости.
В основном ANOVA проверяет нулевую гипотезу бета = 0 (с альтернативной гипотезой бета не равна 0). Здесь мы делаем F-тест, отношение изменчивости которого объясняется моделью и ошибкой (остаточная дисперсия). Дисперсия модели исходит из суммы, которая объясняется линией, которую вы подгоняете, а остаток - из значения, которое не объясняется моделью. Значительный F означает, что бета-значение не равно нулю, означает, что существует значительная связь между двумя переменными.
> anova(reg1)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 81.719 81.719 6.3331 0.0656 .
Residuals 4 51.614 12.904
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Здесь мы можем видеть высокую корреляцию или R-квадрат, но все еще незначительный результат. Иногда вы можете получить результат, в котором низкая корреляция все еще значима. Причиной несущественной связи в этом случае является то, что у нас недостаточно данных (n = 6, остаточный df = 4), поэтому следует рассматривать F как распределение F с помощью числителя 1 df против 4 denomerator df. Так что в этом случае мы не могли исключить, что наклон не равен 0.
Давайте посмотрим на другой пример:
X = c(4,5,8,6,2, 5,6,4,2,3, 8,2,5,6,3, 8,9,3,5,10)
Y = c(3,6,9,8,6, 8,6,8,10,5, 3,3,2,4,3, 11,12,4,2,14)
reg3 <- lm(Y~X)
anova(reg3)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 69.009 69.009 7.414 0.01396 *
Residuals 18 167.541 9.308
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Значение R-квадрата для этих новых данных:
summary(reg3)$r.squared
[1] 0.2917296
cor(X,Y)
[1] 0.54012
Хотя корреляция ниже, чем в предыдущем случае, мы получили значительный уклон. Больше данных увеличивает df и предоставляет достаточно информации, чтобы мы могли исключить нулевую гипотезу о том, что наклон не равен нулю.
Давайте возьмем другой пример, где есть отрицательная корреляция:
X1 = c(4,5,8,6,12,15)
Y1 = c(18,16,2,4,2, 8)
# correlation
cor(X1,Y1)
-0.5266847
# r-square using regression
reg2 <- lm(Y1~X1)
summary(reg2)$r.squared
0.2773967
sqrt(summary(reg2)$r.squared)
[1] 0.5266847
Поскольку значения были в квадрате, квадратный корень не предоставит информацию о положительных или отрицательных отношениях здесь. Но величина такая же.
Случай множественной регрессии:
Множественная линейная регрессия пытается смоделировать взаимосвязь между двумя или более объясняющими переменными и переменной отклика путем подгонки линейного уравнения к наблюдаемым данным. Приведенное выше обсуждение может быть распространено на случай множественной регрессии. В этом случае у нас есть несколько бета в срок:
y = a + beta1X1 + beta2X2 + beta2X3 + ................+ betapXp + error
Example:
X1 = c(4,5,8,6,2, 5,6,4,2,3, 8,2,5,6,3, 8,9,3,5,10)
X2 = c(14,15,8,16,2, 15,3,2,4,7, 9,12,5,6,3, 12,19,13,15,20)
Y = c(3,6,9,8,6, 8,6,8,10,5, 3,3,2,4,3, 11,12,4,2,14)
reg4 <- lm(Y~X1+X2)
Давайте посмотрим на коэффициенты модели:
reg4$coefficients
(Intercept) X1 X2
2.04055116 0.72169350 0.05566427
Таким образом, ваша модель множественной линейной регрессии будет:
Y = 2.04055116 + 0.72169350 * X1 + 0.05566427* X2
Теперь давайте проверим, больше ли бета для X1 и X2.
anova(reg4)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 69.009 69.009 7.0655 0.01656 *
X2 1 1.504 1.504 0.1540 0.69965
Residuals 17 166.038 9.767
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Здесь мы говорим, что наклон X1 больше 0, в то время как мы не можем исключить, что наклон X2 больше 0.
Обратите внимание, что наклон не является корреляцией между X1 и Y или X2 и Y.
> cor(Y, X1)
[1] 0.54012
> cor(Y,X2)
[1] 0.3361571
В ситуации с несколькими вариациями (когда переменная больше двух) Частичная корреляция входит в игру. Частичная корреляция - это корреляция двух переменных с одновременным контролем третьей или более других переменных.
source("http://www.yilab.gatech.edu/pcor.R")
pcor.test(X1, Y,X2)
estimate p.value statistic n gn Method Use
1 0.4567979 0.03424027 2.117231 20 1 Pearson Var-Cov matrix
pcor.test(X2, Y,X1)
estimate p.value statistic n gn Method Use
1 0.09473812 0.6947774 0.3923801 20 1 Pearson Var-Cov matrix