R语言与核密度估计
核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)。
))
z=complex(re=x,im=y)
hist(x,freq=FALSE)
lines(z)
}
(data,)
作图如下:
最后说一个R的内置函数density()。其实我觉得如果不是为了简要介绍核密度估计的一些常识我们完全可以只学会这个函数
先看看函数的基本用法:
density(x, ...)## Default S3 method:
density(x, bw = "nrd0", adjust = 1, kernel = c("gaussian", "epanechnikov", "rectangular", "triangular", "biweight", "cosine", "optcosine"), weights = NULL, window = kernel, width, = FALSE, n = 512, from, to, cut = 3, = FALSE, ...)
对重要参数做出较为详细的说明:
X:我们要进行核密度估计的数据
Bw:窗宽,这里可以由我们自己制定,也可以使用默认的办法nrd0: Bandwidth selectors for Gaussian kernels。(x,nb = 1000, lower = * hmax, upper = hmax, method = c("ste","dpi"), tol = * lower),这里的method =”dpi”就是前面提到过的插入法,”ste”代表solve-the-equationplug-in,也是插入法的改进
Kernel:核的选择
Weights:对比较重要的数据采取加权处理
对于上述混合正态数据data,有
> density(data)
Call:
(x = data)
Data: data (400 obs.); Bandwidth 'bw' =
x y
Min. :- Min. :
1stQu.:- 1st Qu.:
Median : Median :
Mean : Mean :
3rdQu.: 3rd Qu.:
Max. : Max. :
知道带宽:h=(采取正态密度核)那么带入密度估计式就可以写出密度估计函数。
最后以faithful数据集为例说明density的用法:
R数据集faithful是old faithful火山爆发的数据,其中“eruption”是火山爆发的持续时间,waiting是时间间隔
对数据“eruption”做核密度估计
R程序:
data(faithful)
A<-faithful
x<-A[,"eruptions"]
density(x)
plot(density(x))
知道h=
作图:
于核密度估计R中还有不少函数包提供了大量的支持:
可以研读一下如下几个包,也可以自己编程去实现
ks Kernel smoothing
Kendall Kendall rank correlation and Mann-Kendall trend test
KernSmooth Functions for kernel smoothing for Wand & Jones (2019)
Kappalab Non-additive measure and integral manipulation functions
Kerfdr s
R语言与核密度估计 来自淘豆网m.daumloan.com转载请标明出处.