文中需要的统计学知识PPT及测试数据,可以加微信M18368910879联系获取。
1首先,我们要搞清楚什么叫累计概率分布
累积概率分布,又称累积分布函数、分布函数等,用于描述随机变量落在任一区间上的概率,常被视为数据的某种特征。若该变量是连续变量,则累积概率分布是由概率密度函数积分求得的函数;若该变量是离散变量,则累积概率分布是由分布律加和求得的函数。
2先看看最常用的统计学概率分布总结(含清晰图)长啥样?,也就是概率密度函数,简称PDF
链接如下:https://wenku.baidu.com/view/8f507880bceb19e8b8f6ba89.html
3再看看累计概率分布函数CDF长啥样?
https://blog.csdn.net/wangyj705/article/details/81976455
按照定义,CDF即为pdf的积分,嗯,反正我是这样理解的啦!
2其次,我们要搞清楚对自己的数据,如何进行数据的求解及绘图,在本文中,我们提供两种工具吧,matlab和R语言能做,MATLAB作为一套商业化的软件,语言也是非常的简洁优美!举个简单的例子吧
思路一:[par1,par2]=gamfit(你的数据)%上面的语句意思是先对数据进行拟合,得到拟合参数。会出来好几个数字,具体使用哪个,我也不知道,咋办呢?调用MATLAB的拟合函数的工具箱dfittool(直接加载运行),发现拟合参数就是a,b,对比代码得出的参数,选定参数
然后计算累积分布:gams=gamcdf(你的数据,参数1,参数2)
思路二:
直接用matlab画出正态分布的累计概率分布函数图
https://zhidao.baidu.com/question/500257240.html
Matlab统计工具箱中各类概率分布函数使用方法介绍
https://blog.csdn.net/lucylihhu/article/details/78583619
MATLAB各种概率分布画图
https://blog.csdn.net/luopeng757060668/article/details/17309505
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
R语言作为一款开源免费不牵涉版权的软件,自然有很多好处,言归正传,先将它的代码表达如下
https://www.cnblogs.com/nxld/p/6060360.html####常见的R命令
这里我们就先用随机数来说明问题吧,后期用到自己的数据,读者可以具体学习R语言的lypar包,它的select函数可以帮你把你数据集的某一列数据提取出来,filter函数可以按照>0等等的条件将你所需的数据筛选出来。
一:正态分布
#概率密度
x <- seq(-3, 3, 0.01)
#其中“l”为lines的首字母
dev.new()#创建新的图形界面,因为安装的原因,我的电脑出不来图
plot(x,dnorm(x),type ="l")
##累计概率分布
plot(x,pnorm(x),type = "l")
二:gamma分布
x <- seq(-3, 3, 0.01)
plot(x,dgamma(x,shape = 1,scale=1),type ="l")#shape是形状参数,scale是尺度参数
plot(x,pgamma(x,shape = 0.5,scale=1),type ="l")###累计概率分布
这里的形状参数和尺度参数是如何确定的呢?
?dgamma##在R里面找它的用法
dgamma(x, shape, rate = 1, scale = 1/rate, log = FALSE)
pgamma(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,
log.p = FALSE)
qgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,
log.p = FALSE)
rgamma(n, shape, rate = 1, scale = 1/rate)
运行以后出现如下的错误提示
Error in qgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE, :
找不到对象'rate'
Q1将一列数据分布拟合(注意,上面都没有谈到拟合这两个字),得到的数据是什么?得到的图形又是什么?
res =fitdistr(rate, "beta", start=list(shape1 =4, shape2 =5))
https://bbs.pinggu.org/thread-3769423-1-1.html
res =fitdistr(rate, "beta", start=list(shape1 =4, shape2 =5))#注意:注意:这又是与上面所提到的概率分布不相同的拟合表达方式
文中作者给的数据我下载下来了,拟合运行不出来结果。如果把这个数据当成自己的数据导入进来,让plot(x,dnorm(x),type ="l")这个语句执行,又会提示
Error in dnorm(data2) : 数学函数中用了非数值参数
总结:真的好烦啊,自己的数据导入进来做不出来个图,又得不到个数据,还玩毛线吗?希望看到此贴子的统计学大神能够帮忙看看,救救孩子吧!!!