Я провел множественную регрессию, в которой модель в целом значима и объясняет около 13% дисперсии. Тем не менее, мне нужно найти величину дисперсии, объясняемой каждым значимым предиктором. Как я могу сделать это с помощью R?
Вот некоторые примеры данных и кода:
D = data.frame(
dv = c( 0.75, 1.00, 1.00, 0.75, 0.50, 0.75, 1.00, 1.00, 0.75, 0.50 ),
iv1 = c( 0.75, 1.00, 1.00, 0.75, 0.75, 1.00, 0.50, 0.50, 0.75, 0.25 ),
iv2 = c( 0.882, 0.867, 0.900, 0.333, 0.875, 0.500, 0.882, 0.875, 0.778, 0.867 ),
iv3 = c( 1.000, 0.067, 1.000, 0.933, 0.875, 0.500, 0.588, 0.875, 1.000, 0.467 ),
iv4 = c( 0.889, 1.000, 0.905, 0.938, 0.833, 0.882, 0.444, 0.588, 0.895, 0.812 ),
iv5 = c( 18, 16, 21, 16, 18, 17, 18, 17, 19, 16 ) )
fit = lm( dv ~ iv1 + iv2 + iv3 + iv4 + iv5, data=D )
summary( fit )
Вот вывод с моими фактическими данными:
Call: lm(formula = posttestScore ~ pretestScore + probCategorySame +
probDataRelated + practiceAccuracy + practiceNumTrials, data = D)
Residuals:
Min 1Q Median 3Q Max
-0.6881 -0.1185 0.0516 0.1359 0.3690
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.77364 0.10603 7.30 8.5e-13 ***
iv1 0.29267 0.03091 9.47 < 2e-16 ***
iv2 0.06354 0.02456 2.59 0.0099 **
iv3 0.00553 0.02637 0.21 0.8340
iv4 -0.02642 0.06505 -0.41 0.6847
iv5 -0.00941 0.00501 -1.88 0.0607 .
--- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.18 on 665 degrees of freedom
Multiple R-squared: 0.13, Adjusted R-squared: 0.123
F-statistic: 19.8 on 5 and 665 DF, p-value: <2e-16
На этот вопрос здесь дан ответ , но принятый ответ касается только некоррелированных предикторов, и хотя существует дополнительный ответ, который касается коррелированных предикторов, он дает только общую подсказку, а не конкретное решение. Я хотел бы знать, что делать, если мои предикторы коррелируют.
r
regression
variance
baixiwei
источник
источник
relaimpo
пакет и сопровождающий его документ: jstatsoft.org/index.php/jss/article/view/v017i01/v17i01.pdf Я часто использую метод «LMG».Ответы:
Объясненный процент зависит от введенного заказа.
Если указать конкретный заказ, вы можете вычислить это тривиально в R (например , через
update
иanova
функции, смотри ниже), а другой порядок въезда даст потенциально очень разные ответы.[Одной из возможностей может быть усреднение по всем заказам или что-то в этом роде, но это может стать громоздким и может не дать ответа на особенно полезный вопрос.]
-
Как указывает Стат, в одной модели, если вы хотите использовать одну переменную за раз, вы можете просто использовать 'anova' для создания таблицы добавочных сумм квадратов. Это будет следовать из вашего кода:
-
Таким образом, у нас есть объяснение возрастающей дисперсии; как мы получаем пропорцию?
Довольно тривиально, масштабируйте их на 1, деленное на их сумму. (Замените 1 на 100 для объяснения процентной дисперсии.)
Здесь я отобразил его как добавленный столбец к таблице anova:
-
Если вы решите, что вам нужно несколько конкретных порядков ввода, вы можете сделать что-то еще более общее, например, это (что также позволяет вам вводить или удалять группы переменных одновременно, если вы хотите):
(Такой подход также может быть автоматизирован, например, с помощью циклов и использования
get
. При необходимости вы можете добавлять и удалять переменные в нескольких порядках)... а затем масштабировать до процентов, как и раньше.
(NB. Тот факт, что я объясняю, как делать эти вещи, не обязательно должен восприниматься как пропаганда всего, что я объясняю.)
источник
anova(fit)
summary.lm
дает вам тест значимости каждой переменной, которая уже установлена последней).Я доказал, что процент вариации, объясняемый данным предиктором в множественной линейной регрессии, является произведением коэффициента наклона и корреляции предиктора с установленными значениями зависимой переменной (при условии, что все переменные были стандартизированы, чтобы иметь среднее значение ноль и дисперсия одна, которая без потери общности). Найдите это здесь:
https://www.researchgate.net/publication/306347340_A_Natural_Decomposition_of_R2_in_Multiple_Linear_Regression
источник
Вы можете использовать библиотеку hier.part, чтобы иметь подходящие меры для регрессий одной зависимой переменной ко всем комбинациям из N независимых переменных.
источник