[已解决] 如何检测一组数据是否符合对数正态分布,极值I分布

[复制链接]
jiangchangs123 发表于 2018-7-5 11:04:33
求助:
1.
x=lognrnd(20,5,1,10000)
假如我用此代码产生一组对数分布随机数,但是我不确定代码是否正确,我应该怎样检测这组数据是否真的符合对数正态分布
2.同时请教一下极值I分布随机数如何产生,怎么检测。




在网上看了一些东西,只看到正态分布随机数检测,没有看到对数正态分布和极值I分布类型数据检测方法,希望知道的朋友能够提供帮助和指点,在此谢过。。

最佳答案


jingzhaos 发表于 2018-7-5 15:19:31
jiangchangs123 发表于 2018-7-5 14:15
您好,谢谢您的耐心回复。看了您的回答我知道了怎么产生极值I分布随机数列。能不能具体说说这其中的一种, ...

1. KS检验,比如按照你的数据
  1. x=lognrnd(20,5,1,10000);
  2. ln_cdf=[x', cdf('logn',x',20,5)];
  3. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1) %默认是α=0.05,h=0即通过检验
复制代码

2. Anderson-Darling 检验,这个比较简单
  1. x=lognrnd(20,5,1,10000);
  2. [h p ad cv]=adtest(x,'distribution','logn','alpha',0.1)
复制代码

24 条回复


jingzhaos 发表于 2018-7-5 11:44:58
本帖最后由 jingzhaos 于 2018-7-5 11:47 编辑

卡方检验、K-S检验、Anderson-Darling 检验等都可检验是否服从对数正态分布。
R = evrnd(mu,sigma,[m,n]):产生Ⅰ型极值分布随机数。Anderson-Darling 检验、Lilliefors 检验也可检验是否服从极值分布。


jiangchangs123 发表于 2018-7-5 14:15:20
本帖最后由 jiangchangs123 于 2018-7-5 14:23 编辑
jingzhaos 发表于 2018-7-5 11:44
卡方检验、K-S检验、Anderson-Darling 检验等都可检验是否服从对数正态分布。
R = evrnd(mu,sigma,[m,n]): ...

您好,谢谢您的耐心回复。看了您的回答我知道了怎么产生极值I分布随机数列。能不能具体说说这其中的一种,比如k-s检验,Anderson-Darling,具体是怎么检验产生的随机数是否符合要求。。希望能给出代码和怎么判断最后结果是否正确方式,,谢谢您白百忙中的查看

jingzhaos 发表于 2018-7-5 15:19:31
jiangchangs123 发表于 2018-7-5 14:15
您好,谢谢您的耐心回复。看了您的回答我知道了怎么产生极值I分布随机数列。能不能具体说说这其中的一种, ...

1. KS检验,比如按照你的数据
  1. x=lognrnd(20,5,1,10000);
  2. ln_cdf=[x', cdf('logn',x',20,5)];
  3. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1) %默认是α=0.05,h=0即通过检验
复制代码

2. Anderson-Darling 检验,这个比较简单
  1. x=lognrnd(20,5,1,10000);
  2. [h p ad cv]=adtest(x,'distribution','logn','alpha',0.1)
复制代码
回复此楼

jiangchangs123 发表于 2018-7-5 15:42:25
jingzhaos 发表于 2018-7-5 15:19
1. KS检验,比如按照你的数据
2. Anderson-Darling 检验,这个比较简单

您好 感谢您的追答,非常感谢热心帮助。。您上面提到的这两个检验方法都是针对对数正态分布的,当h=0的时候应该就符合,但是如果是极值I分布类型,又怎么样去检验这一组数据是否服从极值I分布呢,能不能麻烦你给出代码以及判断方法

jingzhaos 发表于 2018-7-5 16:25:17
jiangchangs123 发表于 2018-7-5 15:42
您好 感谢您的追答,非常感谢热心帮助。。您上面提到的这两个检验方法都是针对对数正态分布的,当h=0的时 ...

比葫芦画瓢,照猫画虎不会呀?改logn为ev


jiangchangs123 发表于 2018-7-5 19:45:34
jingzhaos 发表于 2018-7-5 16:25
比葫芦画瓢,照猫画虎不会呀?改logn为ev

不好意思,回复晚了,刚看到消息。。。谢谢你哦。。我是新手入门,感谢你的耐心指导

jiangchangs123 发表于 2018-7-5 20:13:00
jingzhaos 发表于 2018-7-5 16:25
比葫芦画瓢,照猫画虎不会呀?改logn为ev
  1. mu=20;sigma=0.5;
  2. aEv=sqrt(6)*sigma/pi;
  3. uEv=mu-psi(1)*aEv;
  4. x=evrnd(uEv,aEv,1,10000);
  5. ln_cdf=[x', cdf('ev',x',20,5)];
  6. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1) %默认是α=0.05,h=0即通过检验
复制代码

得到结果
h =

  logical

   1


p =

     0


ks =

   0.522607002121067


cv =

   0.012221997064643


这个是我写的极值分布随机数产生与检测。。但是最后得到H=1啊  明显错误,麻烦帮忙修正

jingzhaos 发表于 2018-7-5 22:15:08

你这两个参数应该是aev和uev,不是20和5

jiangchangs123 发表于 2018-7-6 09:18:52
jingzhaos 发表于 2018-7-5 22:15
你这两个参数应该是aev和uev,不是20和5

嗯嗯 谢谢您的解答。。

jiangchangs123 发表于 2018-7-6 09:59:23
本帖最后由 jiangchangs123 于 2018-7-6 10:06 编辑
jingzhaos 发表于 2018-7-5 22:15
你这两个参数应该是aev和uev,不是20和5

您好:非常不好意思继续追问您
我在书上看到两种极值I分布产生方式,但是使用您的方法检测得到结果不一样,麻烦您帮忙查看
1.
  1. clear;clc;
  2. muX=7;%均值
  3. sigmaX=0.5;%方差
  4. aEv=sqrt(6)*sigmaX/pi;
  5. uEv=-psi(1)*aEv-muX;%%极值分布两个数值
  6. x=-evrnd(uEv,aEv,1,2000);
  7. ln_cdf=[x', cdf('ev',x',uEv,aEv)];
  8. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1) %默认是α=0.05,h=0即通过检验
复制代码
.
结果:

h =

  logical

   1


p =

     0


ks =

     1


cv =

   0.027282683598229

明显不符合,其中h=1,但是我检测x的均值和方差都是正确的
2.
  1. clear;clc;
  2. muX=7;%均值
  3. sigmaX=0.5;%方差
  4. aEv=sqrt(6)*sigmaX/pi;
  5. uEv=-psi(1)*aEv+muX;%%uEv,以及后面的x产生方式与前面不一样
  6. x=evrnd(uEv,aEv,1,2000);
  7. ln_cdf=[x', cdf('ev',x',uEv,aEv)];
  8. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1) %默认是α=0.05,h=0即通过检验
复制代码


结果:
h =

  logical

   0


p =

   0.102621783785334


ks =

   0.027163622288110


cv =

   0.027282683598229


两种方式产生的随机数,我检测均值和方差都没有什么问题,第一种我在书上确实看到是这样产生的
由此可以说明第一种产生方式是错误的么,但是我在书上确实看到是这样产生的。。麻烦指点一下行吗

我有点懵了,非常感谢您的帮助


jingzhaos 发表于 2018-7-6 10:29:25
jiangchangs123 发表于 2018-7-6 09:59
您好:非常不好意思继续追问您
我在书上看到两种极值I分布产生方式,但是使用您的方法检测得到结果不一样 ...

第一个是极大值分布,第二个才是极小值分布。
同样是极值分布,要分清是极大值分布还是极小值分布,matlab的ev产生的是极小值分布。

jiangchangs123 发表于 2018-7-6 10:51:21
jingzhaos 发表于 2018-7-6 10:29
第一个是极大值分布,第二个才是极小值分布。
同样是极值分布,要分清是极大值分布还是极小值分布,matla ...

您好,谢谢您,我马上去看关于最大最小极值分布的内容,谢谢您的提醒,那如果是最大极值分布 ,应该怎么去检测他最后得到的结果是否真确呢

jiangchangs123 发表于 2018-7-6 11:02:06
jingzhaos 发表于 2018-7-6 10:29
第一个是极大值分布,第二个才是极小值分布。
同样是极值分布,要分清是极大值分布还是极小值分布,matla ...

我检测极大值分布,得到错误的结论,得到H=1,是不是应该修改某代码

jingzhaos 发表于 2018-7-6 11:26:37
jiangchangs123 发表于 2018-7-6 11:02
我检测极大值分布,得到错误的结论,得到H=1,是不是应该修改某代码

matlab只能产生极小值随机数。Anderson-Darling 检验、KS检验默认也是极小值的。如果是极大值,只能自己写了。

jiangchangs123 发表于 2018-7-6 11:57:34
jingzhaos 发表于 2018-7-6 11:26
matlab只能产生极小值随机数。Anderson-Darling 检验、KS检验默认也是极小值的。如果是极大值,只能自己 ...
  1. clear;clc;
  2. muX=7;%均值
  3. sigmaX=0.5;%方差
  4. aEv=sqrt(6)*sigmaX/pi;
  5. uEv=-psi(1)*aEv-muX;%%极值分布两个数值
  6. x=-evrnd(uEv,aEv,1,2000);
  7. ln_cdf=[x', cdf('ev',x',uEv,aEv)];
  8. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1) %默认是α=0.05,h=0即通过检验
复制代码


类似于这样不就是产生极大值分布了,但是怎么检验,确实搞不懂。。你这边有没有办法,能给个代码么

jingzhaos 发表于 2018-7-6 12:01:54
jiangchangs123 发表于 2018-7-6 11:57
类似于这样不就是产生极大值分布了,但是怎么检验,确实搞不懂。。你这边有没有办法,能给个代码么
...

查了查,还真查到了
  1. clear;clc;
  2. muX=7;%均值
  3. sigmaX=0.5;%方差
  4. aEv=sqrt(6)*sigmaX/pi;
  5. uEv=-psi(1)*aEv+muX;%%极值分布两个数值
  6. x=gevrnd(uEv,aEv,[1,2000]);
  7. ln_cdf=[x', cdf('Generalized Extreme Value',x',uEv,aEv)];
  8. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1)
复制代码

jiangchangs123 发表于 2018-7-6 12:04:05
jingzhaos 发表于 2018-7-6 12:01
查了查,还真查到了

太感谢你了,谢谢您啊。。。感谢感谢,又多学了点东西

jingzhaos 发表于 2018-7-6 12:05:27
jiangchangs123 发表于 2018-7-6 12:04
太感谢你了,谢谢您啊。。。感谢感谢,又多学了点东西

你再仔细看看,不知道对不对,没有仔细研究。

jiangchangs123 发表于 2018-7-6 14:27:26
本帖最后由 jiangchangs123 于 2018-7-6 15:30 编辑

jingzhaos 发表于 2018-7-6 12:01
查了查,还真查到了
  1. clear;clc;
  2. muX=7;%均值
  3. sigmaX=0.5;%方差
  4. aEv=sqrt(6)*sigmaX/pi;
  5. uEv=-psi(1)*aEv-muX;%%极值分布两个数值
  6. x=-evrnd(uEv,aEv,[1,2000]);
复制代码
您好,这个才是极大值随机分布产生方式啊,我仔细看了下,您的uEv 和X产生方式跟书上不符合啊,同时我再用
  1. ln_cdf=[x', cdf('Generalized Extreme Value',x',uEv,aEv)];
  2. [h p ks cv]= kstest(x,'CDF', ln_cdf, 'alpha', 0.1)
复制代码
发觉话h=1结果错误

我所查询到
gervnd是广义极值分布随机数列长生方式

jingzhaos 发表于 2018-7-6 15:36:49
本帖最后由 jingzhaos 于 2018-7-6 15:39 编辑
jiangchangs123 发表于 2018-7-6 14:27
jingzhaos 发表于 2018-7-6 12:01
查了查,还真查到了您好,这个才是极大值随机分布产生方式啊,我仔细看了 ...

书上错了。极大值分布有:E(x)=μ+psi(1)*σ,极小值有:E(x)=μ-psi(1)*σ。μ、σ是参数,不是X的均值与标准差。你可以看看matlab的结果[EX VX]=evstat(20,5),[EX1 VX1]=gevstat(0,5,20)就知道了。uEv=-psi(1)*aEv-muX,你看的书上是这么写极大值分布的?你这是想通过极小值分布产生极大值算极大值分布吧?此时的累计概率也要改,若极小值的累计概率是F,极大值分布的就应该是1-F,KS的用法就有问题了。

jiangchangs123 发表于 2018-7-6 17:52:05
jingzhaos 发表于 2018-7-6 15:36
书上错了。极大值分布有:E(x)=μ+psi(1)*σ,极小值有:E(x)=μ-psi(1)*σ。μ、σ是参数,不是X的均值与 ...

这样吧  
我把我看到的拍一张图发上来 您看看问题所在。我想检测产生的数据是不是正确的。。 11.png
22.jpg

jingzhaos 发表于 2018-7-6 18:00:13
jiangchangs123 发表于 2018-7-6 17:52
这样吧  
我把我看到的拍一张图发上来 您看看问题所在。我想检测产生的数据是不是正确的。。

这就是通过极小值分布随机数函数evrnd产生极大值分布随机数,uev取负值,x取负值,但累计概率函数CDF也不一样了,所以无法用K-S检验了。gevrnd是对的k=0就是极大值分布。

jiangchangs123 发表于 2018-7-7 08:30:16
jingzhaos 发表于 2018-7-6 18:00
这就是通过极小值分布随机数函数evrnd产生极大值分布随机数,uev取负值,x取负值,但累计概率函数CDF也不 ...

嗯嗯,非常感谢你,我基础太差了,我再看看

11147 发表于 4 天前
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表