2012-08-25 3 views
3

J'ai un modèle de régression quantile avec 1 régresseur et 1 régressand. Je veux tester l'hypothèse que le régresseur est égal sur chaque quantile. Une approche que j'ai pensée est de tester sur tout tau sur {0.01,0.02, ...., 0,99}. Cependant, je devrais alors écrire:(R, quantreg): Hypothèse testant une large gamme de quantiles

anova(model1,model2,model3,.......,model99), où chaque modèle correspond à une tau différente. Question: Comment puis-je obtenir anova() pour accepter une grande quantité de modèles de type rq sans les taper manuellement?


Ma tentative de solution a été de le faire:

y = rnorm(100) 
x = rnorm(100) 

rqs_object <- rq(y~x,tau=1:99/100) 
anova(rqs_object) 

Cependant, anova ne prend pas clairement le type d'objet rqs, tapez seulement rq, malheureusement.


Cross posté here jusqu'à ce que je décide qu'il avait un grand élément de programmation/spécialiste du problème.

+0

Vous ne devriez pas poser plusieurs questions à la fois. – Roland

+0

Ok, je ne le savais pas. Je vais supprimer le second. –

Répondre

2

Je me concentre sur la question 1 et seulement sur la partie programmation.

certaines données:

set.seed(65465) 
y = rnorm(100) 
x = rnorm(100) 

Maintenant, je définir une fonction, qui prend la protéine tau en entrée et fait l'ajustement:

rqfits <- function(tau) { 
    require(quantreg) 
    rq(y~x,tau=tau) 
} 

je peux ensuite appliquer cette fonction sur un vecteur de taus:

taus <- 1:5/10 
fits <- lapply(taus,rqfits) 

Le résultat est une liste de modèles. Nous pouvons maintenant utiliser do.call pour passer nos modèles à anova:

do.call(anova,fits) 

Quantile Regression Analysis of Deviance Table 

Model: y ~ x 
Joint Test of Equality of Slopes: tau in { 0.1 0.2 0.3 0.4 0.5 } 

    Df Resid Df F value Pr(>F) 
1 4  496 1.0388 0.3866 
Warning: 
In summary.rq(x, se = se, covariance = TRUE) : 2 non-positive fis 
+1

@ user1125946 J'ai édité ma réponse, parce que je me suis juste rappelé que 'do.call' existe. – Roland

Questions connexes