Un


19

J'ai estimé un modèle linéaire robuste Ravec des poids MM en utilisant le rlm()dans le package MASS. `` R '' ne fournit pas de valeur pour le modèle, mais j'aimerais en avoir une s'il s'agit d'une quantité significative. Je suis également intéressé de savoir s'il y a un sens à avoir une valeur R 2 qui pèse la variance totale et résiduelle de la même manière que les observations ont été pondérées dans la régression robuste. Ma pensée générale est que, si, aux fins de la régression, nous sommes essentiellement avec les poids donnant à certaines estimations moins d'influence parce qu'elles sont aberrantes d'une manière ou d'une autre, alors peut-être aux fins du calcul de r 2, nous devrions également donner ces mêmes estimations moins d'influence?R2R2r2

J'ai écrit deux fonctions simples pour le et le R 2 pondéré , elles sont ci-dessous. J'ai également inclus les résultats de l'exécution de ces fonctions pour mon modèle appelé HI9. EDIT: J'ai trouvé la page Web d'Adelle Coster de l'UNSW qui donne une formule qui inclut le vecteur de poids dans le calcul du calcul des deux et tout comme je l'ai fait, et lui ai demandé une référence plus formelle: http: //web.maths. unsw.edu.au/~adelle/Garvan/Assays/GoodnessOfFit.html (toujours à la recherche de l'aide de Cross Validated sur la façon d'interpréter ce r 2 pondéré .)R2R2R2SSeSStr2

#I used this function to calculate a basic r-squared from the robust linear model
r2 <- function(x){  
+ SSe <- sum((x$resid)^2);  
+ observed <- x$resid+x$fitted;  
+ SSt <- sum((observed-mean(observed))^2);  
+ value <- 1-SSe/SSt;  
+ return(value);  
+ }  
r2(HI9)  
[1] 0.2061147

#I used this function to calculate a weighted r-squared from the robust linear model
> r2ww <- function(x){
+ SSe <- sum((x$w*x$resid)^2); #the residual sum of squares is weighted
+ observed <- x$resid+x$fitted;
+ SSt <- sum((x$w*(observed-mean(observed)))^2); #the total sum of squares is weighted      
+ value <- 1-SSe/SSt;
+ return(value);
+ }
 > r2ww(HI9)
[1] 0.7716264

Merci à tous ceux qui passent du temps à y répondre. Veuillez accepter mes excuses s'il y a déjà une très bonne référence à ce sujet que j'ai ratée, ou si mon code ci-dessus est difficile à lire (je ne suis pas un gars du code).


mettre les poids à l'intérieur de lm () et prendre le r au carré à partir de là (pourquoi réinventer la roue?)
user603

1
merci pour le conseil sur la façon de faire ce que j'ai fait plus efficacement. quelqu'un peut-il commenter le sens du r pondéré que j'ai décrit / proposé?
CraigMilligan

@ user603: Comment feriez-vous pour mettre les poids dans lm ()?
histelheim

Juste pour compliment, le moindre carré pondéré ajusté dans R est en minimisant la somme (w * e ^ 2), où e est le résiduel. Donc, pour votre code de calcul, tout poids w doit être pris comme racine carrée.
Yuanhao Lai

Je tiens à souligner que nous ne devons pas prendre de moyenne pondérée, du moins je pense que parce qu'un programme que j'ai écrit donne un r au carré proche de 1 avec: r au carré classique pondéré r au carré mais PAS avec r pondéré au carré où la moyenne est également pondérée, je trouve -6 que c'est contre-intuitif même pour moi, mais je crois que l'expérience cependant
pierre

Réponses:


22

La réponse suivante est basée sur: (1) mon interprétation de Willett et Singer (1988) Une autre mise en garde concernant le R au carré: elle est utilisée dans l'analyse de régression des moindres squates pondérés. Le statisticien américain. 42 (3). pp236-238, et (2) la prémisse qu'une régression linéaire robuste est essentiellement une régression des moindres carrés pondérés avec les poids estimés par un processus itératif.

La formule que j'ai donnée dans la question pour r2w nécessite une petite correction pour correspondre à l'équation 4 de Willet et Singer (1988) pour r2wls: le calcul SSt devrait également utiliser une moyenne pondérée:

the correction is SSt <- sum((x$w*observed-mean(x$w*observed))^2)].

Quelle est la signification de ce r-carré pondéré (corrigé)? Willett et Singer l'interprètent comme: "le coefficient de détermination dans l'ensemble de données [pondéré] transformé. Il s'agit d'une mesure de la proportion de la variation de Y pondéré qui peut être prise en compte par X pondéré , et est la quantité qui est produite comme R2 par les principaux progiciels informatiques statistiques lorsqu'une régression WLS est effectuée ".

Est-il significatif en tant que mesure de la qualité de l'ajustement? Cela dépend de la façon dont il est présenté et interprété. Willett et Singer avertissent qu'il est généralement un peu plus élevé que le r-carré obtenu dans la régression des moindres carrés ordinaires, et la valeur élevée encourage un affichage important ... mais cet affichage peut être trompeur SI il est interprété dans le sens conventionnel de r -squared (comme la proportion de non pondérésvariation expliquée par un modèle). Willett et Singer proposent qu'une alternative moins «trompeuse» soit les pseudoR2wls (leur équation 7), ce qui équivaut à ma fonction r2 dans la question d'origine. En général, Willett et Singer avertissent également qu'il n'est pas bon de s'appuyer sur un r2 (même leur pseudor2wls) comme seule mesure de la qualité de l'ajustement. Malgré ces mises en garde, la prémisse d'une régression robuste est que certains cas sont jugés `` moins bons '' et ne comptent pas autant dans l'ajustement du modèle, et il peut être bon de refléter cela dans une partie du processus d'évaluation du modèle. Le r pondéré décrit peut être une bonne mesure de la qualité de l'ajustement - tant que l'interprétation correcte est clairement donnée dans la présentation et qu'elle n'est pas considérée comme la seule évaluation de la qualité de l'ajustement.


1
(+1). Merci d'avoir pris le temps de répondre.
user603

1

@CraigMilligan. Ne devrait pas:

  • le poids soit en dehors de la parenthèse carrée
  • la moyenne pondérée être calculée comme pour laquelle nous pouvons également utilisersum(x$w*observed)/sum(x$w)weighted.mean(observed,x$w)

Quelque chose comme ça:

r2ww <- function(x){
  SSe <- sum(x$w*(x$resid)^2)
  observed <- x$resid+x$fitted
  SSt <- sum(x$w*(observed-weighted.mean(observed,x$w))^2)
  value <- 1-SSe/SSt;
  return(value);
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.