R語言與核密度估計(非參數(shù)統(tǒng)計)_第1頁
R語言與核密度估計(非參數(shù)統(tǒng)計)_第2頁
R語言與核密度估計(非參數(shù)統(tǒng)計)_第3頁
R語言與核密度估計(非參數(shù)統(tǒng)計)_第4頁
R語言與核密度估計(非參數(shù)統(tǒng)計)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

R語言與非參數(shù)統(tǒng)計〔核密度估量〕核密度估量是在概率論中用來估量未知的密度函數(shù),屬于非參數(shù)檢驗方法之一,由Rosenblatt(1955)和EmanuelParzen(1962)提出,又名Parzen窗〔Parzenwindow〕。

假設(shè)我們有n個數(shù)X1-Xn,我們要計算某一個數(shù)X的概率密度有多大。核密度估量的方法是這樣的:

其中K為核密度函數(shù),h為設(shè)定的窗寬。

核密度估量的原理其實是很簡潔的。在我們對某一事物的概率分布的狀況下。假設(shè)某一個數(shù)在觀看中消逝了,我們可以認(rèn)為這個數(shù)的概率密度很大,和這個數(shù)比較近的數(shù)的概率密度也會比較大,而那些離這個數(shù)遠(yuǎn)的數(shù)的概率密度會比較小。基于這種想法,針對觀看中的第一個數(shù),我們都可以f(x-xi)去擬合我們想象中的那個遠(yuǎn)小近或許率密度。固然其實也可以用其他對稱的函數(shù)。針對每一個觀看中消逝的數(shù)擬合出多個概率密度分布函數(shù)之后,取平均。假設(shè)某些數(shù)是比較重要,某些數(shù)反之,則可以取加權(quán)平均。

但是核密度的估量并不是,也不能夠找到真正的分布函數(shù)。我們可以舉一個極端的例子:在R中輸入:plot(density(rep(0,

1000)))

可以看到它得到了正態(tài)分布的曲線,但實際上呢?從數(shù)據(jù)上推斷,它更有可能是一個退化的單點分布。但是這并不意味著核密度估量是不行取的,至少他可以解決很多模擬中存在的異方差問題。比方說我們要估量一下下面的一組數(shù)據(jù):set.seed(10)

dat<c(rgamma(300,shape=2,scale=2),rgamma(100,shape=10,scale=2))

可以看出它是由300個聽從gamma〔2,2〕與100個gamma〔10,2〕的隨機數(shù)構(gòu)成的,他用參數(shù)統(tǒng)計的方法是沒有方法得到一個好的估量的。那么我們嘗試使用核密度估量:plot(density(dat),ylim=c(0,0.2))

將利用正態(tài)核密度與標(biāo)準(zhǔn)密度函數(shù)作比照dfn<-function(x,a,alpha1,alpha2,theta){

a*dgamma(x,shape=alpha1,scale=theta)+(1-a)*dgamma(x,shape=alpha2,scale=theta)}

pfn<-function(x,a,alpha1,alpha2,theta){

a*pgamma(x,shape=alpha1,scale=theta)+(1-a)*pgamma(x,shape=alpha2,scale=theta)}

curve(dfn(x,0.75,2,10,2),add=T,col=“red“)

得到以以下圖:〔紅色的曲線為真實密度曲線〕可以看出核密度與真實密度相比,得到大致的估量是不成問題的。至少趨勢是得到了的。假設(shè)換用gamma分布的核效果無疑會更好,但是圓滿的是r中并沒有供給那么多的核供我們選擇〔其實我們知道核的選擇遠(yuǎn)沒有窗寬的選擇來得重要〕,所以也無需介懷。R中供給的核:kernel=c(“gaussian“,“epanechnikov“,“rectangular“,

“triangular“,“biweight“,“cosine“,“optcosine“)。我們先來看看窗寬的選擇對核密度估量的影響:dfn1<-function(x){

0.5*dnorm(x,3,1)+0.5*dnorm(x,-3,1)}

par(mfrow=c(2,2))

curve(dfn1(x),from=-6,to=6)

data<-c(rnorm(200,3,1),rnorm(200,-3,1))

plot(density(data,bw=8))

plot(density(data,bw=0.8))

plot(density(data,bw=0.08))

得到以以下圖,我們可以清晰的看到帶寬為0.8恰好適宜,其余的不是擬合缺乏便是過擬合。窗寬究竟該如何選擇呢?我們這里不加證明的給出最正確窗寬選擇公式:

(這個基于積分均方誤差最小的角度得到的)這里介紹兩個可操作的窗寬估量方法:(這兩種方法都比較簡潔導(dǎo)致過分光滑)1、

Silverman大拇指法則這里使用R(phi’’)/sigma^5估量R〔f’’〕,phi代表標(biāo)準(zhǔn)正態(tài)密度函數(shù),得到h的表達(dá)式:h=(4/(3n))^(*1/5)*sigma2、

極大光滑原則h=3*(R(K)/(35n))^(1/5)*sigma固然也有比較麻煩的窗寬估量方法,比方缺一穿插驗證,插入法等,可以參閱《computationalstatistics》一書我們用上面的兩種方法得到的窗寬是多少,他的核密度估量效果好嗎?我們還是以上面的混合正態(tài)數(shù)據(jù)為例來看看效果。使用大拇指法則,將數(shù)據(jù)n=400,sigma=3.030658,帶入公式,h=0.9685291使用極大光滑原則,假設(shè)K為正態(tài)核,R(K)=1/(sqrt(2*pi)),h=1.121023可以看出他們都比我們認(rèn)為的h=0.8要大一些,作圖如下:plot(density(data,bw=0.9685))

plot(density(data,bw=1.1210))

由我們給出的以Gauss核為例做核密度估量用Gauss核做核密度估量的R程序如下〔還是使用我們的混合正態(tài)密度的例子〕:ker.density=function(x,h){

x=sort(x)

n=length(x);s=0;t=0;y=0

for(i

in

2:n)

s[i]=0

for(i

in

1:n){

for(j

in

1:n)

s[i]=s[i]+exp(-((x[i]-x[j])^2)/(2*h*h))

t[i]=s[i]

}

for(i

in

1:n)

y[i]=t[i]/(n*h*sqrt(2*pi))

z=complex(re=x,im=y)

hist(x,freq=FALSE)

lines(z)

}

ker.density(data,0.8)

作圖如下:最終說一個R的內(nèi)置函數(shù)density〔〕。其實我覺得假設(shè)不是為了簡要介紹核密度估量的一些常識我們完全可以只學(xué)會這個函數(shù)先看看函數(shù)的根本用法:density(x,...)##DefaultS3method:density(x,bw=“nrd0“,adjust=1,

kernel=c(“gaussian“,“epanechnikov“,“rectangular“,

“triangular“,“biweight“,

“cosine“,“optcosine“),

weights=NULL,window=kernel,width,

give.Rkern=FALSE,

n=512,from,to,cut=3,na.rm=FALSE,...)對重要參數(shù)做出較為具體的說明:X:我們要進(jìn)展核密度估量的數(shù)據(jù)Bw:窗寬,這里可以由我們自己制定,也可以使用默認(rèn)的方法nrd0:BandwidthselectorsforGaussiankernels。我們還可以使用bw.SJ(x,nb=1000,lower=0.1*hmax,upper=hmax,

method=c(“ste“,“dpi“),tol=0.1*lower),這里的method=”dpi”就是前面提到過的插入法,”ste”代表solve-the-equationplug-in,也是插入法的改進(jìn)Kernel:核的選擇Weights:比照較重要的數(shù)據(jù)實行加權(quán)處理對于上述混合正態(tài)數(shù)據(jù)data,有>density(data)

Call:

density.default(x=data)

Data:data(400obs.);

Bandwidth”bw”=0.8229

x

y

Min.

:-7.5040

Min.

:0.0000191

1stQu.:-3.5076

1stQu.:0.0064919

Median:0.4889

Median:0.0438924

Mean

:0.4889

Mean

:0.0624940

3rdQu.:4.4853

3rdQu.:0.1172919

Max.

:8.4817

Max.

:0.1615015

知道帶寬:h=0.8229〔實行正態(tài)密度核〕那么帶入密度估量式就可以寫出密度估量函數(shù)。最終以faithful數(shù)據(jù)集為例說明density的用法:R數(shù)據(jù)集faithful是oldfaithful火山爆發(fā)的數(shù)據(jù),其中“eruption”是火山爆發(fā)的持續(xù)時間,waiting是時間間隔對數(shù)據(jù)“eruption”做核密度估量R程序:data(faithful)

A<-faithful

x<-A[,“eruptions“]

density(x)

plot(density(x))

知道h=0.3348作圖:于核密度估量R中還有不少函數(shù)包供給了大量的支持:可以研讀一下如下幾個包,也可以自己編程去實現(xiàn)

ks

KernelsmoothingKendallKendallrankcorrelationandMann-KendalltrendtestKern

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論