欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語言中quantile()函數(shù)的用法說明

 更新時間:2021年04月17日 12:48:49   作者:象在舞  
這篇文章主要介紹了R語言中quantile()函數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在R語言中取百分位比用quantile()函數(shù),下面舉幾個簡單的示例:

1、求某個百分位比

> data <- c(1,2,3,4,5,6,7,8,9,10)
> quantile(data,0.5)
50% 
5.5 
> quantile(data,c(0.25,0.75))
 25%  75% 
3.25 7.75 

2、產(chǎn)生一個序列百分位比值

> quantile(data,seq(0.1,1,0.1))
 10%  20%  30%  40%  50%  60%  70%  80%  90% 100% 
 1.9  2.8  3.7  4.6  5.5  6.4  7.3  8.2  9.1 10.0 

3、只取百分號下面的數(shù)值

> unname(quantile(data,seq(0.1,1,0.1)))
 [1]  1.9  2.8  3.7  4.6  5.5  6.4  7.3  8.2  9.1 10.0

補充:基于R語言的分位數(shù)回歸(quantile regression)

分位數(shù)回歸(quantile regression)

這一講,我們談談分位數(shù)回歸的知識,我想大家傳統(tǒng)回歸都經(jīng)常見到。分位數(shù)回歸可能大家見的少一些,其實這個方法也很早了,大概78年代就有了,但是那個時候這個理論還不完善。到2005年的時候,分位數(shù)回歸的創(chuàng)立者Koenker R寫了一本分位數(shù)回歸的專著,劍橋大學出版社出版的。今年本來老爺子要出一本《handbook of quantile regression》,還沒有正式出來呢,目前來看,分位數(shù)回歸應用的范圍非常廣。在金融領域尤為重要。下面先給大家簡單介紹一下,分位數(shù)回歸的基本原理,完后拿R做一個完整的案例。為什么拿R軟件,因為分位數(shù)回歸的發(fā)明者最早拿R寫了一個包,叫quantreag,是當時唯一一個分位數(shù)回歸的包,現(xiàn)在的話,看到python,julia也有相關的包了。但是感覺這個R的還是最好的。

那么什么是分位數(shù)回歸呢,這個就要從傳統(tǒng)的回歸說起,傳統(tǒng)回歸呢,一般叫最小二乘回歸,也叫均值回歸。這個均值是指條件均值。比較抽象,在前面有一篇博文中,我比較詳細地解釋過。那么分位數(shù)回歸就是均值回歸的拓展,也就是它可以擬合均值以外的其它分位點,形成多條回歸線,這里首先需要強調(diào)的是分位數(shù)回歸的分位點是指因變量y的分位點,不是x的。這樣我們?nèi)绻O定多個分位點就得到了多條回歸直線。當然分位數(shù)回歸現(xiàn)在也發(fā)展出來非線性分位數(shù)回歸,就是可以擬合出多條曲線,或者和廣義線性回歸模型一樣可以適用二值變量。要說分位數(shù)回歸具體的原理,后面有空再細談。下面我們拿R語言做一個案例,大家就可以逐漸感受到分位數(shù)回歸具體的含義了。

案例所用的數(shù)據(jù)呢,大家應該都比較熟悉,就是收入和食品消費支出的數(shù)據(jù)

下面看代碼

#導入分位數(shù)回歸的包
library(quantreg)                         
# 引入數(shù)據(jù)
data(engel)
#查看數(shù)據(jù)格式
mode(engel)
[1] "list"
#查看變量名
names(engel)
[1] "income"  "foodexp"
#查看格式
class(engel)
[1] "data.frame"
#查看數(shù)據(jù)的前五行
head(engel)
income  foodexp
1 420.1577 255.8394
2 541.4117 310.9587
3 901.1575 485.6800
4 639.0802 402.9974
5 750.8756 495.5608
6 945.7989 633.7978
#畫個散點圖看看數(shù)據(jù)
plot(engel$income, engel$foodexp, xlab='income', ylab='foodexp')

圖是這樣的

原始數(shù)據(jù)散點圖

下面我們繼續(xù)簡單查看一下數(shù)據(jù)

#查看foodexp的變化范圍
boxplot(engel$foodexp, xlab='foodexp')
#簡單驗證一下因變量foodexp是否服從正態(tài)分布
qqnorm(engel$foodexp, main='QQ plot')
qqline(engel$foodexp, col='red', lwd=2)

結(jié)果如下:

foodexp變化范圍

下面是QQ圖

QQ圖

結(jié)果表明,因變量y明顯不服從正態(tài)分布,但是呢,分位數(shù)回歸不要求y服從正態(tài)分布,不僅如此,而且分位數(shù)回歸還對異常值點不敏感。

下面我們繼續(xù),為了對比,我們?nèi)匀蛔鲆粋€均值回歸,再做一個分位數(shù)回歸。

#可以直接調(diào)用數(shù)據(jù)框里變量
attach(engel)
#設置0.05, 0.25, 0.5, 0.75, 0.95五個分位點,并且進行分位數(shù)回歸,這樣可以得到五條分位數(shù)回歸線
rq_result <- rq(foodexp ~ income, tau=c(0.05, 0.25, 0.5, 0.75, 0.95))
summary(rq_result)
Call: rq(formula = foodexp ~ income, tau = c(0.05, 0.25, 0.5, 0.75, 
    0.95))
tau: [1] 0.05
Coefficients:
            coefficients lower bd  upper bd 
(Intercept) 124.88004     98.30212 130.51695
income        0.34336      0.34333   0.38975
Call: rq(formula = foodexp ~ income, tau = c(0.05, 0.25, 0.5, 0.75, 
    0.95))
tau: [1] 0.25
Coefficients:
            coefficients lower bd  upper bd 
(Intercept)  95.48354     73.78608 120.09847
income        0.47410      0.42033   0.49433
Call: rq(formula = foodexp ~ income, tau = c(0.05, 0.25, 0.5, 0.75, 
    0.95))
tau: [1] 0.5
Coefficients:
            coefficients lower bd  upper bd 
(Intercept)  81.48225     53.25915 114.01156
income        0.56018      0.48702   0.60199
Call: rq(formula = foodexp ~ income, tau = c(0.05, 0.25, 0.5, 0.75, 
    0.95))
tau: [1] 0.75
Coefficients:
            coefficients lower bd  upper bd 
(Intercept)  62.39659     32.74488 107.31362
income        0.64401      0.58016   0.69041
Call: rq(formula = foodexp ~ income, tau = c(0.05, 0.25, 0.5, 0.75, 
    0.95))
tau: [1] 0.95
Coefficients:
            coefficients lower bd upper bd
(Intercept) 64.10396     46.26495 83.57896
income       0.70907      0.67390  0.73444
#上面就是沒條回歸線的回歸系數(shù),我們做個圖看一下
plot(income, foodexp, cex=0.25, type='n', xlab='income', ylab='foodexp')
points(income, foodexp, cex=0.5, col='blue')
#加中位數(shù)數(shù)回歸的直線
abline(rq(foodexp~income, tau=0.5), col='blue')
#加均值回歸的五條直線
abline(lm(foodexp~income), lty=2, col='red')
#將分位數(shù)回歸的五條線加上去
taus <- c(0.05, 0.1, 0.25, 0.75, 0.9, 0.95)
#
for (i in 1:length(taus)){
  abline(rq(foodexp~income, tau=taus[i]), col='gray')
}

效果如下:

效果圖

從上圖,我們可以看到,分位數(shù)回歸可以擬合出多條直線,這個對于我們數(shù)據(jù)分布比較復雜的時候,很有用處,每條線反應了不同檔次下,自變量與因變量的關系。

實際上這個只是分位數(shù)回歸的一小部分應用,得到不同分位點下的數(shù)據(jù),我們還可以進行概率密度估計,得到相應的概率密度預測。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • R語言 實現(xiàn)兩表連接且輸出不重復數(shù)據(jù)

    R語言 實現(xiàn)兩表連接且輸出不重復數(shù)據(jù)

    這篇文章主要介紹了R語言 實現(xiàn)兩表連接且輸出不重復數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • R語言對二進制文件操作詳解

    R語言對二進制文件操作詳解

    在本篇內(nèi)容里小編給大家整理的是一篇關于R語言二進制文件操作實例內(nèi)容,有興趣的朋友們可以學習下。
    2021-05-05
  • R語言 如何保留大于或小于特定數(shù)值的行

    R語言 如何保留大于或小于特定數(shù)值的行

    這篇文章主要介紹了R語言實現(xiàn)保留大于或小于特定數(shù)值的行操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言中循環(huán)的相關知識詳解

    R語言中循環(huán)的相關知識詳解

    這篇文章主要為大家詳細介紹了R語言中循環(huán)的相關知識,文中的示例代碼講解詳細,對我們學習R語言有一定的幫助,感興趣的可以了解一下
    2023-03-03
  • Rcpp入門R代碼提速方法過程

    Rcpp入門R代碼提速方法過程

    這篇文章主要為大家介紹了Rcpp入門如何讓R代碼更快的提速方法過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • R語言處理JSON文件的方法

    R語言處理JSON文件的方法

    在本篇文章里小編給大家分享的是一篇關于R語言處理JSON文件的方法,有興趣的朋友們可以參考下。
    2021-05-05
  • R語言入門教程之刪除指定數(shù)據(jù)的方法

    R語言入門教程之刪除指定數(shù)據(jù)的方法

    這篇文章主要介紹了R語言入門教程之刪除指定數(shù)據(jù)的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 解決R語言報錯:Error?in?y?+?1:non-numeric?argument?to?binary?operator

    解決R語言報錯:Error?in?y?+?1:non-numeric?argument?to?binary

    R語言編程中的常見錯誤有一些錯誤是R的初學者和經(jīng)驗豐富的R程序員都可能常犯的,下面這篇文章主要給大家介紹了關于解決R語言報錯:Error?in?y?+?1:non-numeric?argument?to?binary?operator的相關資料,需要的朋友可以參考下
    2022-11-11
  • R語言判斷語句的使用詳解

    R語言判斷語句的使用詳解

    這篇文章主要介紹了R語言判斷語句的使用詳解,幫助大家更好的理解和學習使用R語言,感興趣的朋友可以了解下
    2021-03-03
  • R語言中aggregate?函數(shù)詳解

    R語言中aggregate?函數(shù)詳解

    這篇文章主要介紹了R語言中aggregate?函數(shù)的相關資料,aggregate函數(shù)是數(shù)據(jù)處理中常用到的函數(shù),具有強大的功能,可以按照要求把數(shù)據(jù)打組聚合,然后對聚合以后的數(shù)據(jù)進行加和、求平均等各種操作,需要的朋友可以參考下
    2023-04-04

最新評論