4

quantregパッケージを使用して分位点回帰から係数と上限と下限を抽出したいと思います。ヘルプ ファイルの例を次に示します。

data(engel)
attach(engel)
taus <- c(.05,.1,.25,.75,.9,.95)
f <- rq((foodexp)~(income),tau=taus)
sf <- summary(f)
sf[1]
#[[1]]

#Call: rq(formula = (foodexp) ~ (income), tau = taus)

#tau: [1] 0.05

#Coefficients:
#            coefficients lower bd  upper bd 
#(Intercept) 124.88004     98.30212 130.51695
#income        0.34336      0.34333   0.38975

coefficients()係数を取得するために使用できることはわかっています。

cf <- t(data.frame(coefficients(f)))    # transpose for better arrangement
cf
#              (Intercept)    income
#tau..0.05   124.88004 0.3433611
#tau..0.10   110.14157 0.4017658
#tau..0.25    95.48354 0.4741032
#tau..0.75    62.39659 0.6440141
#tau..0.90    67.35087 0.6862995
#tau..0.95    64.10396 0.7090685

しかし、に表示される上限/下限を取得する方法がわかりませんsummary()。を見ましたstr(sf)が、抽出方法がわかりませんでした。

最終的には、タウス、係数、上限/下限をデータフレームに入れてさらに処理したいと考えています。

4

4 に答える 4

2

非切片項の係数が必要なだけだと思います。これはどう

sapply(sf, function(x) c(tau=x$tau, x$coefficients[-1, ]))

のさまざまなレベルを反復しtau、係数の間隔を抽出します

                  [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
tau          0.0500000 0.1000000 0.2500000 0.7500000 0.9000000 0.9500000
coefficients 0.3433611 0.4017658 0.4741032 0.6440141 0.6862995 0.7090685
lower bd     0.3433270 0.3420992 0.4203298 0.5801552 0.6493680 0.6739000
upper bd     0.3897500 0.4507941 0.4943288 0.6904127 0.7422294 0.7344405
于 2014-05-29T06:25:31.593 に答える
1

coefによって返されるオブジェクトで関数を使用してsummary、値を抽出できます。

library(quantreg)
f <- rq(stack.loss ~ stack.x,.5)

sf <- summary(f)
sf
# Call: rq(formula = stack.loss ~ stack.x, tau = 0.5)

# tau: [1] 0.5

# Coefficients:
#                   coefficients lower bd  upper bd 
# (Intercept)       -39.68986    -41.61973 -29.67754
# stack.xAir.Flow     0.83188      0.51278   1.14117
# stack.xWater.Temp   0.57391      0.32182   1.41090
# stack.xAcid.Conc.  -0.06087     -0.21348  -0.02891

coef(sf)
#                   coefficients    lower bd     upper bd
# (Intercept)       -39.68985507 -41.6197317 -29.67753515
# stack.xAir.Flow     0.83188406   0.5127787   1.14117115
# stack.xWater.Temp   0.57391304   0.3218235   1.41089812
# stack.xAcid.Conc.  -0.06086957  -0.2134829  -0.02891341

ここでcoefは、行列を返します。下限と上限は、それぞれ 2 列目と 3 列目にあります。

于 2014-05-29T06:26:33.227 に答える