Poids dans la régression quantile pour une enquête complexe dans R


8

Je veux inclure des échantillons de poids dans mon modèle de régression quantile, mais je ne sais pas comment procéder.

J'ai déjà défini mon poids, qui sont des poids répliqués déjà donnés dans l'ensemble de données d'enquête (calculé dans le package d'enquête):

w<-svrepdesign(variables=data[,1:10],repweights=data[,11:30],type="BRR", 
  combined.weights=TRUE, weights=r.weights, rho=0.5,dbname="")

et mon modèle rq est:

rq(y~x,tau=c(.1,.2,.3,.4,.5,.6,.7,.8,.9),data=my.data))

J'ai essayé d'utiliser la withReplicatesfonction, mais sans succès. Aucune suggestion?


1
Quel logiciel utilises-tu? Dans Stata 13, vous pouvez ajouter des poids d'enquête à la régression quantile.
Maarten Buis

1
Assurez-vous que ce que vous pesez est quelque chose que vous voulez marginaliser, et réalisez que vous payez un prix de variance élevé pour cela. Si l'enquête a sur-échantillonné les hommes et que vous souhaitez développer une estimation non spécifique au sexe, la pondération est pour vous. Si, d'autre part, vous voulez des estimations conditionnelles, c'est-à-dire que vous voulez ajuster le sexe comme une covariable ordinaire, alors la pondération peut être contre-productive.
Frank Harrell

@FrankHarrell, si dans votre exemple les poids sont de 3 pour les hommes et 10 pour les femmes (sous-échantillonnées), alors les estimations au sein de chaque groupe de sexe sont aussi bonnes que iid, et leurs erreurs standard ne souffrent pas de poids inégaux: pour les hommes, nous avons jewjeyje/jewje=3jeyje/je1=y¯où la sommation concerne uniquement les hommes.
StasK

@Alicja, assurez-vous d'avoir une justification théorique de ce que vous allez faire. Autrement dit, quelle méthode d'estimation de la variance vous donne des erreurs standard cohérentes pour votre méthode. Pour les rqdonnées iid, les erreurs standard impliquent une estimation de la densité du noyau de la densité des erreurs à un point quantile choisi. Il peut s'agir ou non d'une quantité significative avec des données d'enquête complexes. En tant que tel, rqest basé sur des équations d'estimation non lisses qui impliquent des fonctions de saut, et la théorie BRR n'est généralement établie que pour des statistiques lisses.
StasK

@StasK Je ne pense pas que ce soit le calcul pertinent. Les estimations sexospécifiques (par exemple, conditionnelles au sexe) sont ce qu'elles sont et aucune pondération n'est nécessaire ou appropriée. Si l'on veut «suréchantillonner» un groupe de sexes, l'estimation pondérée résultante (qui inconditionne le sexe) a une faible précision, ce qui réduit effectivement la taille de l'échantillon pour le groupe suréchantillonné.
Frank Harrell

Réponses:


3

Je ne suis pas sûr que la réponse @Metrics fournisse les erreurs standard correctes pour un appel quantreg pondéré par l'enquête. voici un exemple de ce que vous essayez de faire. vous rencontrez certainement un bogue parce que la qrfonction imbriquée dans la withReplicatesfonction à ce stade ne peut pas gérer plusieurs tauparamètres à la fois (même si la qrfonction seule pourrait le faire). il suffit d'appeler un à la fois, peut-être comme ça :)

library(survey)
library(quantreg)

# load some fake data
data(scd)
repweights <-
    cbind(c(4,0,3,0,4,0), c(3,0,0,4,0,3),c(0,3,4,0,0,2),c(0,1,0,4,3,0))

# tack on the fake replicate weights
x <- cbind( scd , repweights )

# tack on some fake main weights
x[,9] <- c( 3 , 2 , 3 , 4 , 1 , 4 )

# name your weight columns
names( x )[ 5:9 ] <- c( paste0( 'rep' , 1:4 ) , "wgt" )

# create a replicate-weighted survey design object
scdrep <-
    svrepdesign(
        data = x ,
        type = "BRR" , 
        repweights = "rep" ,
        weights = ~wgt ,
        combined.weights = TRUE
    )

# loop through each desired value of `tau`
for ( i in seq( 0.1 , 0.9 , by = 0.1 ) ){

    print( i )

    # follow the call described here:
    # http://www.isr.umich.edu/src/smp/asda/Additional%20R%20Examples%20bootstrapping%20with%20quantile%20regression.pdf
    print( 
        withReplicates( 
            scdrep , 
            quote( 
                coef( 
                    rq( arrests ~ alive , tau = i , weights = .weights ) 
                ) 
            )
        )
    )

}

2

L'utilisation de rqdans quantreg package

rq(formula, tau=.5, data, subset, weights, na.action,
method="br", model = TRUE, contrasts, ...)

où, poids = vecteur des poids d'observation; s'il est fourni, l'algorithme s'adapte pour minimiser la somme des poids multipliés dans les résidus absolus. La longueur des poids doit être la même que le nombre d'observations. Les poids doivent être non négatifs et il est fortement recommandé qu'ils soient strictement positifs, car les poids nuls sont ambigus.

Veuillez vous assurer que vous n'avez aucun poids dans vos observations.

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.