R implémentation du coefficient de détermination partielle

9

Quelqu'un a-t-il des suggestions ou des packages pour calculer le coefficient de détermination partielle?

Le coefficient de détermination partielle peut être défini comme le pourcentage de variation qui ne peut pas être expliqué dans un modèle réduit, mais peut être expliqué par les prédicteurs spécifiés dans un modèle complet (er). Ce coefficient est utilisé pour indiquer si un ou plusieurs prédicteurs supplémentaires peuvent être utiles dans un modèle de régression plus précis.

Le calcul du r ^ 2 partiel est relativement simple après avoir estimé vos deux modèles et généré les tables ANOVA pour eux. Le calcul pour le r ^ 2 partiel est:

(SSEreduced - SSEfull) / SSEreduced

J'ai écrit cette fonction relativement simple qui calculera cela pour un modèle de régression linéaire multiple. Je ne connais pas les autres structures de modèle dans R où cette fonction peut ne pas fonctionner aussi bien:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

Toutes suggestions ou astuces sur des fonctions plus robustes pour accomplir cette tâche et / ou des implémentations plus efficaces du code ci-dessus seraient très appréciées.

Chasse
la source
2
Je suggère d'essayer les autres modèles et de voir si le code fonctionne ou non. R est généralement agréable, donc anova devrait retourner des choses similaires pour différents modèles. Le problème vient de votre formule initiale. Tient-il pour d'autres modèles? Si ce n'est pas le cas, il est inutile de faire fonctionner le code.En outre, le code devrait émettre un avertissement indiquant qu'il est utilisé pour les modèles où la formule ne tient pas.
mpiktas
Je ne vois pas vraiment la question. Vous voulez une fonction qui calcule R2 partiel, mais vous en avez déjà une. Connaissez-vous la sensibilité du package (il n'y a pas de R2 partiel mais pcc qui est un cas particulier est implémenté)?
Robin Girard
@robin - Je m'excuse si ma question n'était pas claire. Je suis intéressé à trouver un package qui contient ce calcul (car il contient probablement de nombreuses autres fonctions utiles qui seraient utiles) et / ou des suggestions sur la façon d'améliorer la fonction que j'ai écrite ci-dessus. Il manque évidemment toute vérification d'erreur et peut ne pas s'appliquer à tous les types de modèles.
Chase
Je suggère que cette question soit migrée vers SE. Au cœur de la question semble être un problème de mise en œuvre, pas un problème statistique.
caracal
@caracal - tout ce que vous voulez. Je sais qu'il y a eu pas mal de discussions sur l'endroit où la ligne dans le sable devrait être tracée entre SO et CV concernant les questions liées à R. Je n'ai pas de préférence marquée de toute façon. Mon travail m'a éloigné de ce problème spécifique pour la dernière fois, mais je le reverrai dans les semaines à venir afin que je puisse trouver une meilleure solution moi-même. Je vais aussi bien laisser la question s'estomper dans l'éther ...
Chase

Réponses:

0

Eh bien, r ^ 2 est vraiment juste une covariance au carré sur le produit des variances, donc vous pourriez probablement faire quelque chose comme cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue ) var (YRed) quel que soit le type de modèle; vérifiez si cela vous donne la même réponse dans le cas lm.

http://www.stator-afm.com/image-files/r-squared.gif

Patrick McCann
la source