左手matlb+右手R=======统计学的累计概率分布

  • 时间:
  • 来源:互联网

文中需要的统计学知识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) : 数学函数中用了非数值参数

总结:真的好烦啊,自己的数据导入进来做不出来个图,又得不到个数据,还玩毛线吗?希望看到此贴子的统计学大神能够帮忙看看,救救孩子吧!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

农业小气候
发布了1 篇原创文章 · 获赞 0 · 访问量 5
私信 关注

本文链接http://element-ui.cn/news/show-1440.html