R 程式設計/分位數迴歸
外觀
< R 程式設計
| 本節內容為殘缺內容。 您可以透過擴充套件它來幫助華夏公益教科書。 |
分位數迴歸 是一種非常古老的方法,由於計算能力的進步,近年來才流行起來。該領域的 主要研究人員之一也是一名 R 從業者,他開發了一個專門用於分位數迴歸的軟體包 (**quantreg**)[1] ·[2]。
從理論上講,分位數迴歸也是線性的,因此可以包含在“線性迴歸”頁面中。但是,這是一個非常具體的主題,我們認為為這個主題寫一個專門的頁面是值得的。
我們從一個簡單分位數模型中進行模擬。我們首先生成一個均勻的誤差項 u 和一個協變數 x。
N <- 10^3
u <- runif(N)
x <- 1 + rnorm(N)
y <- qnorm(u, mean = 0, sd = 2) + qnorm(u, mean = 1, sd = 1) * x
我們估計了一些 tau(分位數)值的 分位數模型,並繪製了係數。
q1 <- rq(y ~ x, tau = seq(.1,.9,.1))
summary(q1)
plot(q1)
然後,我們繪製散點圖、使用標準線性模型預測的值和使用分位數線性模型預測的值。
plot(x,y, col = "grey")
m1 <- lm(y ~ x)
abline(m1, col = "red")
taus <- seq(.1,.9,.1)
for (i in 1:length(taus)){
abline(rq(y ~ x, tau = taus[i]), col = "blue")
}
grid()
我們也可以同時估計所有分位數的模型。
q2 <- rq(y ~ x, tau = -1)
plot(q2, nrow = 2, ncol = 1)
對於大型資料集,最好使用“fn”或“pfn”方法。
> N <- 10^5
> u <- runif(N)
> x <- 1 + rnorm(N)
> y <- qnorm(u, mean = 0, sd = 2) + qnorm(u, mean = 1, sd = 1) * x
> system.time(rq(y ~ x, tau = .5, method = "br"))
user system elapsed
1.48 0.00 1.48
> system.time(rq(y ~ x, tau = .5, method = "fn"))
user system elapsed
0.60 0.00 0.61
> system.time(rq(y ~ x, tau = .5, method = "pfn"))
user system elapsed
0.30 0.00 0.29
- Koenker, Roger (2005) 分位數迴歸, 劍橋大學出版社。 ISBN 0-521-60827-9
- ↑ Roger Koenker (2010). quantreg: Quantile Regression. R 包版本 4.50. http://CRAN.R-project.org/package=quantreg
- ↑ Roger Koenker 的個人網頁
