多个拟合分布选取最优的matlab代码,matlab做不同分布拟合并检验比较拟合效果

clear,clc

X=[108        18        111        166        171        16        25 136        36        68         136        41        50        77        18        223        296        40        77        44        86        109        177        21        80        98        17        18        43        116        81        109        204        418        35        22        39        98        60        623        126        137         12        319        17        78        133         40        44        372        84        18        358        76         57        567        54        171        237        261        27        42        374        133        183         151        89         170        24        30        362        65        68        50        23        555        174        37        149        360        416        15        33        182        127        197        118        81        104        36        49        125        181        60        23        67        193        72        61        142        18        30        43        364         221        210         137        371        34        87        36        126        78        102        373        22        115        137        90        158        191        232        301        87        16        64        236        208        212        242        121        213        146        201        16        92        95        335        287        91        335        21        41        322        47        342        93        193         77        244         163        271        760        46        293        64        810        64        481        144        178        424        149        295        264        275        226        157        66        83        121        250        101        607        491        79        283        445        39        49        198        53        22        503         21        666        98        57         34        38        322        384        54        545        685        103        18        133        34        210         55        83        179        210        245        35        310        60        151        115        414        90        20         402        22        20        235        227        404        54        203        64        436         36        128        125        275        32        196        246        305        38        131        368        56        282        12        175        20        128        76        167        63        29        67        146        37        160        320        132        72        191        254        98        102        34        202        60        64        245        21        162        64        16        38        15        46        29        16        35        15        174        17        32        90        162        80        212        51        21        43        48        64        76        46        54        109        21        9        49        30        44        60        36        80        264        53        24        132        34        18        14        22        13        55        96        53        8];

g=0:50:900;

[f,x]=hist(X,g);

x=x+15; x=[0,x];f=[0,f];

xb=x/max(x);

bpdf=@(b,x)b(1)*betapdf(x,b(2),b(3));

b=[14.8       1.66       10];

for l=1:5

b=lsqcurvefit(bpdf,b,xb,f);

b=nlinfit(xb,f,bpdf,b);

end

b

figure(1),clf

bar(xb,f,3.32,'w')

hold on

x1=0:.005:1;

y1=bpdf(b,x1);

plot(x1,y1,'b-','linewidth',3)

axis([-.025,1, 0,max(f)*1.05])

title('beta distribution')

fhat=bpdf(b,xb);

SS=var(f)*(length(f)-1)

RSS=(f-fhat)*(f-fhat)'

Rsquare1=(SS-RSS)/SS

text(.5, 75,['R^2=',num2str(Rsquare1)],'fontsize',15)

xw=x;

wpdf=@(b,x)b(1)*wblpdf(x,b(2),b(3));

b=[13760 143  1.43];

for l=1:5

b=lsqcurvefit(wpdf,b,xw,f);

b=nlinfit(xw,f,wpdf,b);

end

b

figure(2),clf

bar(xw,f,3.32,'w')

hold on

x1=0:1:max(xw);

y1=wpdf(b,x1);

plot(x1,y1,'b-','linewidth',3)

axis([-25,max(xw)+10, 0,max(f)*1.05])

title('weibull distribution')

fhat=wpdf(b,xw);

SS=var(f)*(length(f)-1)

RSS=(f-fhat)*(f-fhat)'

Rsquare2=(SS-RSS)/SS

text(500, 75,['R^2=',num2str(Rsquare2)],'fontsize',15)

两者相差不大。此类问题做成合适的次数分布也很重要(上述分布不一定最合适)。

nh13031.png

(35.36 KB, 下载次数: 2)

2017-2-21 11:33 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

5be8e36781d87f909418ab53f4e73190.png

nh13032.png

(34.57 KB, 下载次数: 0)

2017-2-21 11:33 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

e039aff422d00e3de92324699445d1d6.png