J'ai estimé un modèle linéaire robuste R
avec 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?
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é .)R2
SSe
SSt
#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).