R语言中一组数据服从威布尔分布,怎么判断拟合的效果

Python020

R语言中一组数据服从威布尔分布,怎么判断拟合的效果,第1张

首先可以利用fitdistr函数求得weibull分布的形状参数和尺寸参数,假设数据为x:

library(MASS) #fitdistr需要利用MASS包

fitdistr(x, densfun = "weibull",lower=0)

得到形状参数shape与尺度参数scale

然后利用ks.test进行检验:

ks.test(jitter(x),"pweibull",shape,scale)

上边的jitter用来做小扰动,因为如果x中有重复数据的话ks.test会报错,如果x中没有重复数据则不需要jitter。shape是得到的形状参数,scale是得到的尺度参数。

ks.test得到两个结果,一个是D,越小越好,一个是p-value,这个值要大于0.05

matlab 中可以利用wblrnd命令产生所需的服从韦布尔分布的随机数,如下:

R = wblrnd(A,B)

R = wblrnd(A,B,m,n,...)

R = wblrnd(A,B,[m,n,...])

其中,A为尺度参数,B为形状参数。m和n为所需要的数的形式,比如说生成m行*n列的矩阵。

matlab 内部解释为:

This MATLAB function generates random numbers for the Weibull distribution with

scale parameter, A and shape parameter, B.

R = wblrnd(A,B)

R = wblrnd(A,B,m,n,...)

R = wblrnd(A,B,[m,n,...])