matlab帕累托分布函数,Matlab里面的重尾分布

​和某著名每日倒闭了么日企合作项目里面的一部分关于用户行为识别的相关,比如如何区分用户是轻荷载还是重荷载。我怕我下一期用的时候会忘,所以就先写出来吧……

Matlab里面没有提供太多重尾分布的函数,或者我没找见,比较常用的是广义帕累托分布(Generalized Pareto

distribution)​,这个函数调用方式是:

​R = gprnd(K,sigma,theta,[m,n,...])

这个函数会返回一个大小为[m,n,……]的矩阵,矩阵内元素服从广义帕累托分布。

广义帕累托分布的参数是K,sigma和theta,按照WIkipedia上关于广义帕累托分布的符号,K对应形状参数,sigma对应尺度参数,theta对应位置参数。

不过这个函数并不是标准的帕累托分布,帕累托分布的参数是形状参数alpha和尺度参数Xm,需要稍微处理一下,换算比较简单:

K = 1/alpha

sigma = Xm/alpha

theta = Xm

​这样就是标准的帕累托分布了。如果你没有具体参数但又要输出一个帕累托分布的话,需要注意满足theta=sigma/k。

然后我就试了一下,先是把传输的包的大小排序,红色是重尾分布(标准帕累托分布),蓝色是轻尾分布(看着像指数)

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

​可以看出来明显帕累托分布里面样本中绝对值大的样本明显多,分布不均匀,是比较符合重尾分布的特征的。

有了样本就可以画样本的概率密度函数了,这里可以用核平滑法,Matlab里面也有,函数是

[f,xi] = ksdensity(x)

对离散一维样本默认步进是1,范围是0-100,我用了以后感觉线性坐标下区别不明显,至少对机器来说不太好识别,后来发觉用对数坐标较为明显:

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

这样的话,一方面是斜率不一样,明显重尾分布比较接近0,另一个就是这两个pdf都可以进行线性拟合,但是明显重尾分布的RMSE会更大,应该大大概两个数量级。

暂时没有其他更多的想法。

http://cn.mathworks.com/help/stats/gprnd.html

http://cn.mathworks.com/help/stats/ksdensity.html

#EOF

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值