J'ai effectué une régression multiple dans laquelle le modèle dans son ensemble est significatif et explique environ 13% de la variance. Cependant, je dois trouver la quantité de variance expliquée par chaque prédicteur significatif. Comment puis-je faire cela en utilisant R?
Voici quelques exemples de données et de code:
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 )
Voici la sortie avec mes données réelles:
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
Cette question a été répondue ici , mais la réponse acceptée ne concerne que les prédicteurs non corrélés, et bien qu'il existe une réponse supplémentaire qui traite des prédicteurs corrélés, elle ne fournit qu'un indice général, pas une solution spécifique. Je voudrais savoir quoi faire si mes prédicteurs sont corrélés.
r
regression
variance
baixiwei
la source
la source
relaimpo
paquet et son document d'accompagnement: jstatsoft.org/index.php/jss/article/view/v017i01/v17i01.pdf J'utilise fréquemment la méthode "LMG".Réponses:
Le pourcentage expliqué dépend de la commande saisie.
Si vous spécifiez un ordre particulier, vous pouvez le calculer trivialement dans R (par exemple via les fonctions
update
etanova
, voir ci-dessous), mais un ordre d'entrée différent donnerait des réponses potentiellement très différentes.[Une possibilité pourrait être de faire la moyenne de toutes les commandes ou quelque chose, mais cela deviendrait lourd et pourrait ne pas répondre à une question particulièrement utile.]
-
Comme le souligne Stat, avec un seul modèle, si vous recherchez une variable à la fois, vous pouvez simplement utiliser 'anova' pour produire la table des sommes incrémentielles des carrés. Cela découlerait de votre code:
-
Nous avons donc expliqué la variance incrémentielle; comment obtient-on la proportion?
Assez trivialement, mettez-les à l'échelle 1 divisé par leur somme. (Remplacez le 1 par 100 pour la variation en pourcentage expliquée.)
Ici, je l'ai affiché en tant que colonne ajoutée au tableau anova:
-
Si vous décidez que vous voulez plusieurs ordres d'entrée particuliers, vous pouvez faire quelque chose d'encore plus général comme celui-ci (qui vous permet également d'entrer ou de supprimer des groupes de variables à la fois si vous le souhaitez):
(Une telle approche peut également être automatisée, par exemple via des boucles et l'utilisation de
get
. Vous pouvez ajouter et supprimer des variables dans plusieurs commandes si nécessaire)... puis évoluez en pourcentages comme précédemment.
(NB. Le fait que j'explique comment faire ces choses ne doit pas nécessairement être considéré comme le plaidoyer de tout ce que j'explique.)
la source
anova(fit)
summary.lm
J'ai prouvé que le pourcentage de variation expliqué par un prédicteur donné dans une régression linéaire multiple est le produit du coefficient de pente et de la corrélation du prédicteur avec les valeurs ajustées de la variable dépendante (en supposant que toutes les variables ont été normalisées pour avoir une moyenne nulle et variance un, qui est sans perte de généralité). Trouvez-le ici:
https://www.researchgate.net/publication/306347340_A_Natural_Decomposition_of_R2_in_Multiple_Linear_Regression
la source
Vous pouvez utiliser la bibliothèque hier.part pour avoir des mesures d'ajustement pour les régressions d'une variable dépendante unique à toutes les combinaisons de N variables indépendantes
la source