Rの複雑な調査の分位点回帰の重み


8

分位点回帰モデルにサンプルの重みを含めたいのですが、これを行う方法がわかりません。

私はすでに自分の重みを定義しました。これは、調査データセット(調査パッケージで計算)ですでに指定されている複製された重みです。

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

そして私のrqモデルは:

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

withReplicates関数を使用しようとしましたが、成功しませんでした。助言がありますか?


1
どのソフトウェアを使用していますか?Stata 13では、分位点回帰に調査の重みを追加できます。
Maarten Buis 2013

1
あなたが重み付けしているものがあなたが疎外したいものであることを確認し、あなたがこれを行うためにあなたが高い変動価格を払っていることを理解してください。調査が過剰にサンプリングされた男性で、性別に限定されない推定値を作成する場合は、重み付けが適しています。一方、条件付き推定が必要な場合、つまり、通常の共変量として性別を調整したい場合、重み付けは逆効果になる場合があります。
フランクハレル

@FrankHarrell、あなたの例では、重みが男性で3、(アンダーサンプリングされた)女性で10である場合、各性別グループ内の推定値はiidと同じくらい良好であり、標準誤差は不均等な重みの影響を受けません:男性の場合、合計は男性のみです。iwiyi/iwi=3iyi/i1=y¯
StasK 2014年

@Alicja、これからやろうとしていることに対して理論的な正当性があることを確認してください。つまり、どの分散推定法を使用しても、メソッドの一貫した標準誤差が得られます。ためrqIIDデータと、標準誤差は、選択された分位点におけるエラー密度のカーネル密度推定を含みます。これは、複雑な調査データで意味のある量である場合とそうでない場合があります。このように、rqはジャンプ関数を含む滑らかでない推定方程式に基づいており、BRR理論は通常、滑らかな統計のためにのみ確立されます。
StasK 2014年

@StasK私はそれが関連する計算だとは思いません。性別固有の推定値(例:性別の条件付き)はそれらの推定値であり、重み付けは不要または適切です。1つの性別グループを「アンサンプリング」する場合、結果として得られる加重推定(性別は無条件)の精度は低く、オーバーサンプリンググループのサンプルサイズは実質的に小さくなります。
フランクハレル2014年

回答:


3

@Metrics回答が調査加重quantreg呼び出しの正しい標準エラーを与えるかどうかはわかりません。これがあなたがやろうとしていることの例です。ので、あなたは確かにバグがヒットしているqr内にネストされた関数でwithReplicates、この時点では機能は、複数の処理することはできませんtau(たとえ一度にパラメータをqr独自のかもしれない上の機能)。おそらくこのように、一度に1つずつ呼び出すだけです:)

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

quantregパッケージrqでの使用

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

ここで、weights =観測の重みのベクトル。指定した場合、アルゴリズムは、絶対残差に乗算された重みの合計を最小化するように適合します。重みの長さは観測値の数と同じでなければなりません。重みは非負でなければならず、重みがゼロであいまいであるため、厳密に正にすることを強くお勧めします。

観測値に重みがないかどうかを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.