概率密度函数是概率论核心概念之一,用于描述连续型随机变量所服从的概率分布,是概率计算的通用表达。研究一个随机变量,不只是要看它能取哪些值,更重要的是它取各种值的概率如何!在实际使用时对应离散化后的频率。也可以这样理解,概率密度函数是数学通用表达的频率,而统计学中的频率是将其离散化后的表达,二者本质上是一致的,所以可用直方图近似理解概率密度函数,我们经常将概率密度函数和直方图画在一起来对照。见下图:
一、概率(稳定的频率)
概率:概率亦称“或然率”。它反映随机事件出现的可能性(likelihood)大小。随机事件是指在相同条件下,可能出现也可能不出现的事件。
例如,从一批有正品和次品的商品中,随意抽取一件,“抽得的是正品”就是一个随机事件。设对某一随机现象进行了n次试验与观察,其中A事件出现了m次,即其出现的频率为m/n。经过大量反复试验,常有m/n越来越接近于某个确定的常数(此论断证明详见伯努利大数定律)。
该常数即为事件A出现的概率,常用$P (A) $表示。
二、概率密度函数(频率的通用整合)
如果对于随机变量\(X\),\(X\)的分布函数\(F(x)\),存在非负函数\(f(x)\),使对于任意实数\(x\),有\(F(x)=\int_{-\infty}^xf(t)dt\),则称\(X\)为连续型随机变量,其中函数\(f(x)\)称为\(X\)的概率密度函数,简称概率密度。
性质
$ f(x)\ge0 $
$ \int_{-\infty}^\infty f(x)dx=1$
对于任意实数\(x_1\),\(x_2\) (\(x_1\) ≤\(x_2\)),$ P\{x_1 若\(f(x)\)在点\(x\)处连续,则有\(F′(x)=f(x)\) 三、直方图(频率的离散整合) 直方图表示一个变量的值在范围内的频率。直方图类似于条形图,但不同的是它将值分组到连续的范围内。直方图(Histogram)又称柱状图,直方图中的每个条表示该范围中的数值的个数,是由一系列高度不等的纵条纹或线段表示的数据分布情况。可以使用直方图估计数据的概率分布情况。 直方图是数值数据分布的精确图形表示。这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。这些值通常被指定为连续的,不重叠的变量间隔。间隔必须相邻,并且通常是(但不是必须的)相等的大小。 在绘制直方图时,可使用hist(x)函数,hist()函数有许多参数,可以使用?hist()来了解不同参数的作用及其使用方法。 hist(x, breaks = "Sturges", freq = NULL, probability = !freq, include.lowest = TRUE, right = TRUE, density = NULL, angle = 45, col = NULL, border = NULL, main = paste("Histogram of" , xname), xlim = range(breaks), ylim = NULL, xlab = xname, ylab, axes = TRUE, plot = TRUE, labels = FALSE, nclass = NULL, warn.unused = TRUE, ...) #x:通常是向量,也就是直方图所用到的数据。 #freq:默认设置是freq=NULL。当freq=FALSE时,其纵坐标是以概率的形式呈现,而freq=TRUE时则是频率作为纵坐标。 #breaks 直方图的分组,可以理解为设定直方图里面有几根柱子。当为数字向量时,指定直方图在哪些点截断,一定要包含数据的极值。 #xlim,ylim设置x,y轴的范围 #xlab,ylib设定x,y轴的名字 hist(mtcars$mpg, freq=F, breaks=6) #在R语言中,FALSE可以用F代替,这样比较简洁。在这里我们以频率/组距来作为纵坐标,并且只绘制5个直方条出来 四、数据分布的密度函数图 自至少 18 世纪以来,直方图一直是流行的可视化选项,部分原因在于它们很容易通过手工生成。现今由于笔记本电脑和手机等日常设备已经具备了广泛的计算能力,我们发现它们越来越多地被密度图取代。在密度图中,我们尝试通过绘制适当的连续曲线来显示数据的基本概率分布,见下图所示。该曲线需要从数据中估计,并且用于该估计过程的最常用方法称为核密度估计。在核密度估计中,我们在每个数据点的位置画一个较小宽度(由一个名为带宽的参数控制)的连续曲线(核),然后我们将所有这些曲线加起来以获得最终密度估计,最广泛使用的核是高斯核(即高斯钟形曲线)。 4.1 核密度估计 核密度估计(kernel density estimation,KDE)是根据已知的一列数据(x1,x2,…xn)估计其密度函数的过程,即寻找这些数的概率分布曲线。密度估计就是给定一列数据,分布未知的情况下估计其密度函数,例如上文的6个数据:c(x1 = −2.1,x2 = −1.3, x3 = −0.4, x4 = 1.9, x5 = 5.1, x6= 6.2),我们看下这列数据的“密度”如何。 画频率直方图就是一种密度估计的方法(如下图,组距为2),这里的“密度”(density)可以感性得理解为一个区间(直方图的组距)内数据数量的多少,右图即为这6个数据的密度曲线(这里简称为密度图),它是左图的外轮廓化,数据量越多,直方图的顶点也越接近一条线。与直方图的情况一样,密度图的确切视觉外观取决于核和带宽选择。带宽参数的行为类似于直方图中的箱宽。如果带宽太小,则密度估计可能变得过于尖锐并且视觉上嘈杂,并且数据中的主要趋势可能被掩盖。另一方面,如果带宽太大,则数据分布中的较小特征可能消失。此外,核的选择会影响密度曲线的形状。 4.2 核密度图的绘制 par(mfrow=c(2,1)) d <- density(mtcars$mpg) plot(d) d <- density(mtcars$mpg) plot(d, main="Kernel Density of Miles Per Gallon") polygon(d, col="red", border="blue") rug(mtcars$mpg, col="brown") 五、直方图和概率密度函数 5.1 直方图和密度曲线的结合 dev.off() x <- mtcars$mpg ##将mtcars的变量mpg赋值给变量x hist(x, breaks = 12, col = "red", xlab = "Miles Per Gallon", #ylab = "y轴标题", main = "Histogram with Density Curve", border = "black", freq = FALSE, density = 12, angle = 45, labels = T ) #添加密度线 lines(density(x),col = "black",lwd = 3) #添加外框线 box() 5.2直方图和正态分布曲线的结合 #接下来为直方图加上正态分布曲线 x <- mtcars$mpg ##将mtcars的变量mpg赋值给变量x h<-hist(x, breaks=10, col="red", xlab="Miles Per Gallon", main="Histogram with Normal Curve") ##xlab参数用来设置X轴标签,main参数用来设置图片的主标题 xfit<-seq(min(x),max(x),length=40) ##生成从X的最小值到最大值的等间距的40个数 yfit<-dnorm(xfit,mean=mean(x),sd=sd(x)) ##使用dnorm()函数生成服从正态分布的概率密度函数值 lines(xfit, yfit, col="blue", lwd=2) ##绘制密度图形,lwd指的是线宽。 box() 5.3 密度图和正态分布图的结合 参考文献 r语言直方图_R语言入门之直方图与密度曲线 7 可视化分布:直方图和密度图关键点
概率密度函数是概率论核心概念之一,用于描述连续型随机变量所服从的概率分布,是概率计算的通用表达。研究一个随机变量,不只是要看它