Fiz uma regressão múltipla na qual o modelo como um todo é significativo e explica cerca de 13% da variação. No entanto, preciso encontrar a quantidade de variação explicada por cada preditor significativo. Como posso fazer isso usando R?
Aqui estão alguns dados e código de exemplo:
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 )
Aqui está a saída com meus dados reais:
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
Esta pergunta foi respondida aqui , mas a resposta aceita apenas aborda preditores não correlacionados e, embora haja uma resposta adicional que aborda preditores correlacionados, ela fornece apenas uma dica geral, não uma solução específica. Gostaria de saber o que fazer se meus preditores estiverem correlacionados.
r
regression
variance
baixiwei
fonte
fonte
relaimpo
pacote e seu documento: jstatsoft.org/index.php/jss/article/view/v017i01/v17i01.pdf Eu uso o método "LMG" com frequência.Respostas:
A porcentagem explicada depende do pedido digitado.
Se você especificar uma ordem específica, poderá calcular isso trivialmente em R (por exemplo, através das funções
update
eanova
, veja abaixo), mas uma ordem de entrada diferente produziria respostas potencialmente muito diferentes.[Uma possibilidade pode ser a média de todos os pedidos ou algo assim, mas seria complicado e pode não estar respondendo a uma pergunta particularmente útil.]
-
Como aponta Stat, com um único modelo, se você estiver atrás de uma variável por vez, poderá usar 'anova' para produzir as somas incrementais da tabela de quadrados. Isso seguiria no seu código:
-
Então, aí temos a variação incremental explicada; como obtemos a proporção?
Bastante trivialmente, dimensione-os por 1 dividido pela sua soma. (Substitua 1 por 100 para ver a variação percentual explicada.)
Aqui eu o exibi como uma coluna adicionada à tabela anova:
-
Se você decidir que deseja várias ordens de entrada específicas, poderá fazer algo ainda mais geral como este (que também permite inserir ou remover grupos de variáveis por vez, se desejar):
(Essa abordagem também pode ser automatizada, por exemplo, através de loops e do uso de
get
. Você pode adicionar e remover variáveis em várias ordens, se necessário)... e depois dimensione para porcentagens como antes.
(NB. O fato de eu explicar como fazer essas coisas não deve necessariamente ser tomado como defesa de tudo o que explico.)
fonte
anova(fit)
summary.lm
Eu provei que a porcentagem de variação explicada por um determinado preditor em uma regressão linear múltipla é o produto do coeficiente de inclinação e a correlação do preditor com os valores ajustados da variável dependente (assumindo que todas as variáveis foram padronizadas para ter zero médio e variância um; sem perda de generalidade). Encontre aqui:
https://www.researchgate.net/publication/306347340_A_Natural_Decomposition_of_R2_in_Multiple_Linear_Regression
fonte
Você pode usar a biblioteca hier.part para ter medidas de qualidade de ajuste para regressões de uma única variável dependente para todas as combinações de N variáveis independentes
fonte