Ajuster une droite de régression robuste à l'aide d'un estimateur MM dans R


8

Le contexte. Je voudrais ajuster une droite de régression pour étudier la relation entre une variable de réponse et une covariable continue . En raison de la présence de mauvais points de levier, j'ai opté pour un estimateur MM au lieu de l'estimateur LS habituel.yx

Méthodologie. Fondamentalement, l'estimation MM est une estimation M initialisée par un estimateur S. Par conséquent, deux fonctions de perte doivent être choisies. J'ai choisi la fonction de perte de Tukey Biweight largement utilisée

ρ(u)={1[1(uk)2]3if |u|k1if |u|>k,

avec à l'estimateur S préliminaire (qui donne un point de rupture égal à ), et avec à l'étape M-estimation (pour garantir une efficacité gaussienne de ).k=1.54850%k=2.69770%

Je voudrais utiliser R pour adapter ma robuste ligne de régression.

Question.

library(MASS)
rlm(y~x, 
    method="MM",
    k0=1.548, c=2.697,
    maxit=50)
  • Mon code est-il conforme au paragraphe précédent?
  • Souhaitez-vous utiliser d'autres arguments facultatifs?

ÉDITER. Suite à ma discussion avec @Jason Morgan, je me rends compte que mon code précédent est incorrect. (@Jason Morgan: Merci beaucoup pour cela!) Cependant, je ne suis toujours pas convaincu par sa proposition. Au lieu de cela, voici ce que je propose maintenant:

library(robustbase)
lmrob(y~x, 
      tuning.chi=1.548, tuning.psi=2.697)

Je pense que ça colle à la méthodologie maintenant. Êtes-vous d'accord?

Merci!

Réponses:


5

Par défaut, la documentation indique que rlmutilise des psi=psi.huberpoids. Ainsi, si vous souhaitez utiliser le bisquare de Tukey, vous devez le spécifier psi=psi.bisquare. Les paramètres par défaut sont ceux psi.bisquare(u, c = 4.685, deriv = 0)que vous pouvez modifier à votre guise. Par exemple, peut-être quelque chose comme

rlm(x ~ y, method="MM", psi=psi.bisquare, maxit=50)

Vous pouvez également rechercher si vous devez utiliser les carrés les moins coupés ( init="lts") pour initialiser vos valeurs de départ. La valeur par défaut est d'utiliser les moindres carrés.


@Janson Morgan: êtes-vous sûr de ce que vous proposez? Avez-vous une expérience avec cette fonction? Ma documentation (R 2.13.1) indique en fait "L'ensemble initial de coefficients et l'échelle finale sont sélectionnés par un estimateur S avec k0 = 1,548; cela donne (pour n >> p) le point de décomposition 0,5. L'estimateur final est un M-estimateur avec bi-pondération de Tukey et échelle fixe qui héritera de ce point de rupture à condition que c> k0; cela est vrai pour la valeur par défaut de c qui correspond à 95% d'efficacité relative à la normale. "
ocram

1
J'ai estimé ces modèles dans le passé. Comme l'indique la documentation, la première étape de l'estimation MM se fait avec les poids de Huber, la seconde avec les poids bisquares. Mes notes (d'il y a quelques années) indiquent que dans la première étape S, vous pouvez utiliser des poids bisquare au lieu des poids Huber si vous spécifiez en psiconséquence. Je laisserais probablement csa valeur par défaut pour commencer (je modifierai ma réponse en conséquence).
Jason Morgan

1
J'utilise également rlm et j'utilise la fonction bisquare psi en raison de sa propriété redescendante. Parfois, il y a cependant des problèmes de convergence, en particulier avec des échantillons plus petits.
jbowman
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.