Главный компонент регрессии? Что такое зависимая переменная? - PullRequest
2 голосов
/ 23 марта 2020

Я выполняю PCA, чтобы попытаться вывести sh реальные коэффициенты с высокой степенью корреляции переменных. У меня очень большой набор данных, но я постараюсь упростить здесь. У меня есть формула:

lm(y~x1+x2+x3...x55) -> reg_linear_model

Проблема, с которой я сталкиваюсь, заключается в том, что x1:x4 все очень сильно коррелированы , и некоторые из них приходят из-за этого отрицательно. При попытке выполнить я получаю список компонентов и их значений. Я хотел бы проверить, какие компоненты использовать, но зависимый Y - это данные за три года, разбитые по неделям, поэтому y1, y2, y3, y4, ....y156. 156 weeks. У меня проблема в том, что я не могу регрессировать компоненты к y, потому что длины разные. Нужно ли каким-то образом преобразовывать Y, чтобы он вписывался в число строк в качестве компонентов? На это очень сложно найти ответ. Многие объяснения ПЦР просто говорят о регрессии компонентов на y, но Y не находится в .

Цените любую помощь в этом!

1 Ответ

0 голосов
/ 23 марта 2020

Обычно вы делаете это так, мы можем использовать набор данных iris, и давайте сделаем Sepal.Length зависимой, а другие независимой переменной.

Прежде всего, существует корреляция между зависимым Petal.Width и Petal.Length:

cor(iris[,2:4])
             Sepal.Width Petal.Length Petal.Width
Sepal.Width    1.0000000   -0.4284401  -0.3661259
Petal.Length  -0.4284401    1.0000000   0.9628654
Petal.Width   -0.3661259    0.9628654   1.0000000

Как вы сказали, если мы делаем регрессию, мы видим один из них go минус:

summary(lm(Sepal.Length ~ .,data=iris[,1:4]))

Call:
lm(formula = Sepal.Length ~ ., data = iris[, 1:4])

Residuals:
     Min       1Q   Median       3Q      Max 
-0.82816 -0.21989  0.01875  0.19709  0.84570 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.85600    0.25078   7.401 9.85e-12 ***
Sepal.Width   0.65084    0.06665   9.765  < 2e-16 ***
Petal.Length  0.70913    0.05672  12.502  < 2e-16 ***
Petal.Width  -0.55648    0.12755  -4.363 2.41e-05 ***

Мы делаем PCA и получаем основную сумму компоненты, которые находятся под $x:

pca=prcomp(iris[,2:4])
cor(iris[,"Sepal.Length"],pca$x)
           PC1       PC2       PC3
[1,] 0.8619141 -0.279587 0.1937703

data = data.frame(
Sepal.Length=iris[,"Sepal.Length"],
pca$x)

summary(lm(Sepal.Length ~ .,data=data))

Call:
lm(formula = Sepal.Length ~ ., data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.82816 -0.21989  0.01875  0.19709  0.84570 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  5.84333    0.02568 227.519  < 2e-16 ***
PC1          0.37123    0.01340  27.697  < 2e-16 ***
PC2         -0.58457    0.06506  -8.984 1.22e-15 ***
PC3          0.86983    0.13969   6.227 4.80e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Компоненты P C не коррелированы, и вы можете использовать их для регрессии. Если у вас много переменных, вы также можете выбрать корреляцию с целевой переменной, как указано выше.

...