Множественная регрессия при некоррелированных независимых переменных в зависимую переменную
Учитывая множественную регрессию, например Y ~ X1 + X2 + X3
Как вы думаете, стоит ли адаптировать модель множественной регрессии к данным, когда cor(X1, Y)
, cor(X2, Y)
а также cor(X3, Y)
все маленькие значения, такие как 0.2
Кроме того, участки (X1, Y)
, (X2, Y)
а также (X3, Y)
не видны (линейно, нелинейно) некоррелированные?
В итоге,
Когда каждая независимая переменная некоррелирована с зависимой переменной (визуально линейно и нелинейно), есть ли вероятность, что модель множественной регрессии дает существенные коэффициенты?
Для тех же данных, есть ли вероятность, что нелинейные модели, такие как нейронные сети, дают хороший предсказуемый результат?
1 ответ
В ответ на (1), возможно, что объясняющие переменные с низкими краевыми корреляциями становятся значимыми при вводе в множественную регрессию. Например, если X1 и X2 отрицательно связаны друг с другом и оба положительно влияют на Y, связь между Y и X1 может быть нарушена влиянием X2 (и наоборот).
Множественные регрессии эффективно оценивают взаимосвязь между откликом и каждой объясняющей переменной при контроле влияния всех других терминов в модели, поэтому это смешение эффективно устраняется. Код в конце этого поста показывает гипотетический пример.
Сказав вышесказанное, кажется более вероятным, что ваши низкие корреляции отражают, что ваши объясняющие переменные не являются хорошими предикторами вашего ответа, а скорее хорошими предикторами, которые путают друг друга. Только один способ выяснить это.
В ответ на (2) также возможно, что нелинейная модель даст лучшую точность прогнозирования, чем линейная модель. Однако по моему опыту, если у вас низкая прогнозирующая точность для одного типа модели, другие типы моделей вряд ли будут работать хорошо.
Вот пример кода, который я упоминал выше:
# Make example data
X1 = rnorm(100)
X2 = -X1 + runif(100)/10 #X2 is negatively correlated with X1
Y = X1 + X2 + runif(100)
# Check correlations
cor(X1, Y) #should give low correlation
cor(X2, Y) # should give low correlation
cor(X1, X2) # should give high (negative) correlation
# Fit model and extract pvalues. Should find significant relationships between Y and X1 and X2 despite the low correlations
fit = lm(Y ~ X1 + X2)
summary(fit)$coefficients[, "Pr(>|t|)"] # pvalues
Чтобы использовать мультирегрессионную модель, вы должны убедиться, что абсолютные остатки распределены нормально, а их среднее значение должно быть 0. Когда существует некорреляция между зависимой и независимой переменной, вы можете их преобразовать:
- журнал (x) или квадрат (x). Для этого в наборе данных будет новый столбец. Этот новый столбец следует проверить с помощью qq-диаграмм на предмет нормального распределения. Если да, используйте этот столбец. В конце концов, вы должны позаботиться об интерпретации данных, потому что они преобразуются.
Чтобы предсказать зависимую переменную, может помочь nn, но вам нужно попробовать разные слои и найти наименьшую среднеквадратичную ошибку.