3 votes

Régression quantile et valeurs p

J'applique la régression guantile à mon ensemble de données (en utilisant R). Il est facile de produire une belle image de nuage de points avec différentes lignes de régression quantile (taus <- c(0.05,0.25,0.75,0.95)).

Le problème se pose lorsque je souhaite produire des valeurs p (afin de voir la signification statistique de chaque ligne de régression) pour chacun de ces quantiles. Pour le quantile médian (tau=0,5), cela ne pose pas de problème, mais lorsqu'il s'agit par exemple de tau=0,25, j'obtiens le message d'erreur suivant :

>QRmodel<-rq(y~x,tau=0.25,model=T)
>summary(QRmodel,se="nid")
Error in summary.rq(QRmodel, se = "nid") : tau - h < 0:  error in summary.rq

Quelle en est la raison ?

De même : Est-il recommandé de mentionner les valeurs p et les coefficients concernant les résultats du modèle de régression par quantile ou pourrait-on se contenter de montrer l'image du graphique et de discuter des résultats sur la base de cette image ?

Meilleures salutations, personne frustrée

8voto

joran Points 68079

Une bonne façon d'apprendre ce qui se passe dans ce genre de situation de débogage est de trouver la partie du code qui génère l'erreur. Si vous tapez "summary.rq" dans la console, vous verrez le code de la fonction summary.rq. En le parcourant, vous trouverez la section où il calcule les se à l'aide de la méthode "nid", en commençant par ce code :

else if (se == "nid") {
    h <- bandwidth.rq(tau, n, hs = hs)
    if (tau + h > 1) 
        stop("tau + h > 1:  error in summary.rq")
    if (tau - h < 0) 
        stop("tau - h < 0:  error in summary.rq")
    bhi <- rq.fit.fnb(x, y, tau = tau + h)$coef
    blo <- rq.fit.fnb(x, y, tau = tau - h)$coef

Ce qui se passe ici, c'est que pour calculer les se, la fonction doit d'abord calculer une largeur de bande, h, et le modèle quantreg est réajusté pour tau +/- h. Pour les tau proches de 0 ou de 1, il est possible que l'ajout ou la soustraction de la largeur de bande "h" conduise à un tau inférieur à 0 ou supérieur à 1, ce qui n'est pas bon, et la fonction s'arrête donc.

Plusieurs possibilités s'offrent à vous :

1.) Essayer une méthode différente (bootstrapping ?)

2.) Modifiez vous-même le code de summary.rq pour le forcer à utiliser soit max(tau,0) soit min(tau,1) dans les cas où la largeur de bande fait sortir tau de ses limites. (Il peut y avoir de sérieuses raisons théoriques pour lesquelles c'est une mauvaise idée ; ce n'est pas conseillé à moins que vous ne sachiez ce que vous faites).

3.) Vous pourriez essayer de vous documenter sur la théorie qui sous-tend le calcul de ces se afin d'avoir une meilleure idée des cas où ils peuvent fonctionner correctement ou non. Cela pourrait vous éclairer sur la raison pour laquelle vous rencontrez des erreurs avec des valeurs de tau proches de 0 ou 1.

0voto

AEM Points 339

Essayer summary(QRmodel,se="boot")

Consultez l'aide pour summary.rq également !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X