您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何在R語(yǔ)言中使用quantile()函數(shù),文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
> 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
> 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
> 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
補(bǔ)充:基于R語(yǔ)言的分位數(shù)回歸(quantile regression)
這一講,我們談?wù)劮治粩?shù)回歸的知識(shí),我想大家傳統(tǒng)回歸都經(jīng)常見(jiàn)到。分位數(shù)回歸可能大家見(jiàn)的少一些,其實(shí)這個(gè)方法也很早了,大概78年代就有了,但是那個(gè)時(shí)候這個(gè)理論還不完善。到2005年的時(shí)候,分位數(shù)回歸的創(chuàng)立者Koenker R寫(xiě)了一本分位數(shù)回歸的專(zhuān)著,劍橋大學(xué)出版社出版的。今年本來(lái)老爺子要出一本《handbook of quantile regression》,還沒(méi)有正式出來(lái)呢,目前來(lái)看,分位數(shù)回歸應(yīng)用的范圍非常廣。在金融領(lǐng)域尤為重要。下面先給大家簡(jiǎn)單介紹一下,分位數(shù)回歸的基本原理,完后拿R做一個(gè)完整的案例。為什么拿R軟件,因?yàn)榉治粩?shù)回歸的發(fā)明者最早拿R寫(xiě)了一個(gè)包,叫quantreag,是當(dāng)時(shí)唯一一個(gè)分位數(shù)回歸的包,現(xiàn)在的話(huà),看到python,julia也有相關(guān)的包了。但是感覺(jué)這個(gè)R的還是最好的。
那么什么是分位數(shù)回歸呢,這個(gè)就要從傳統(tǒng)的回歸說(shuō)起,傳統(tǒng)回歸呢,一般叫最小二乘回歸,也叫均值回歸。這個(gè)均值是指條件均值。比較抽象,在前面有一篇博文中,我比較詳細(xì)地解釋過(guò)。那么分位數(shù)回歸就是均值回歸的拓展,也就是它可以擬合均值以外的其它分位點(diǎn),形成多條回歸線(xiàn),這里首先需要強(qiáng)調(diào)的是分位數(shù)回歸的分位點(diǎn)是指因變量y的分位點(diǎn),不是x的。這樣我們?nèi)绻O(shè)定多個(gè)分位點(diǎn)就得到了多條回歸直線(xiàn)。當(dāng)然分位數(shù)回歸現(xiàn)在也發(fā)展出來(lái)非線(xiàn)性分位數(shù)回歸,就是可以擬合出多條曲線(xiàn),或者和廣義線(xiàn)性回歸模型一樣可以適用二值變量。要說(shuō)分位數(shù)回歸具體的原理,后面有空再細(xì)談。下面我們拿R語(yǔ)言做一個(gè)案例,大家就可以逐漸感受到分位數(shù)回歸具體的含義了。
案例所用的數(shù)據(jù)呢,大家應(yīng)該都比較熟悉,就是收入和食品消費(fèi)支出的數(shù)據(jù)
#導(dǎo)入分位數(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 #畫(huà)個(gè)散點(diǎn)圖看看數(shù)據(jù) plot(engel$income, engel$foodexp, xlab='income', ylab='foodexp')
圖是這樣的
下面我們繼續(xù)簡(jiǎn)單查看一下數(shù)據(jù)
#查看foodexp的變化范圍 boxplot(engel$foodexp, xlab='foodexp') #簡(jiǎn)單驗(yàn)證一下因變量foodexp是否服從正態(tài)分布 qqnorm(engel$foodexp, main='QQ plot') qqline(engel$foodexp, col='red', lwd=2)
結(jié)果如下:
下面是QQ圖
結(jié)果表明,因變量y明顯不服從正態(tài)分布,但是呢,分位數(shù)回歸不要求y服從正態(tài)分布,不僅如此,而且分位數(shù)回歸還對(duì)異常值點(diǎn)不敏感。
下面我們繼續(xù),為了對(duì)比,我們?nèi)匀蛔鲆粋€(gè)均值回歸,再做一個(gè)分位數(shù)回歸。
#可以直接調(diào)用數(shù)據(jù)框里變量 attach(engel) #設(shè)置0.05, 0.25, 0.5, 0.75, 0.95五個(gè)分位點(diǎn),并且進(jìn)行分位數(shù)回歸,這樣可以得到五條分位數(shù)回歸線(xiàn) 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 #上面就是沒(méi)條回歸線(xiàn)的回歸系數(shù),我們做個(gè)圖看一下 plot(income, foodexp, cex=0.25, type='n', xlab='income', ylab='foodexp') points(income, foodexp, cex=0.5, col='blue') #加中位數(shù)數(shù)回歸的直線(xiàn) abline(rq(foodexp~income, tau=0.5), col='blue') #加均值回歸的五條直線(xiàn) abline(lm(foodexp~income), lty=2, col='red') #將分位數(shù)回歸的五條線(xiàn)加上去 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') }
效果如下:
上述就是小編為大家分享的如何在R語(yǔ)言中使用quantile()函數(shù)了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。