我写了一个估计混合泊松分布的程序,但是我修改了多次后运行还是出现错误提示,请各位大侠帮忙检查一下到底程序哪里有问题?小弟先谢过了。
以下是程序:
function f=lik_fct(al,de,mu,eps_b,eps,s) % maximum likelihood estimation function
% input data: b and s
% output parameters: al de mu eps_b eps_s
syms al de mu eps_b eps_s
b=[1242;855;1123;1072;1191;1066;1153;1379;1172;1170;1298;1121;1173;1001;1265;
1007;1171;981;1114;1000;881;1080;772;1303;847;955;1103;793;1004;876;862;1066;
1320;1569;1526;1069;1131;1105;910;1236;939;1145;1195;1043;1359;1175;1046;1016;
1156;1180;1031;1128;932;1252;1207;1174;910;931;885;879;1026;1159;1100;1078;865;1162;
1044;1029;1387;1446;1285;1238;808;707;719;794;763;835;684;846;623;635;761;833;792;622;
548;548;776;593;580;460;602;634;518;770;692;749;1000;657;820;819;595;783;857;728;802;803;
811;699;657;886;708;953;800;766;853;740;1012;586;725;807;739;827;943;1013;843;1027;1195;
1082;1212;1255;1180;992;1229;1234;1310;1432;1268;1189;1514;1121;1122;1009;1067;1186;1306;
981;1199;1086;1025;831;800;977;1224;1340;1184;1001;920;791;749;970;1229;1270;1429;1133;
824;1014;1213;1244;922;889;1512;1079;851;1140;1022;802;1041;1114;1064;990;823;922;975;
1002;1053;906;1010;1023;977;729;958;877;1051;1227;1219;1220;1479;995;946;926;817;960;
911;1042;1118;1126;1196;830;1140;1303;1485;1123;1359;903;785;665;663;967;799;943;819;
787;818;808;1448;1309;1723;1366;1342;1290;1371;1075;1014;917;976;691;898;1183;778];
s=[1099;881;1032;1194;1122;1006;1070;919;1075;1145;1132;1168;1086;1366;1037;1223;1219;
1046;1013;1039;1008;965;1225;961;1388;1013;853;906;966;1024;992;1135;1037;923;959;
1141;1036;1054;1486;1201;1198;1250;1026;917;759;961;1174;1535;1033;1265;1274;1213;1166;
971;1052;1281;1157;1266;1226;1116;1045;1025;979;1138;1332;935;1033;1088;931;901;1016;998;
585;571;597;500;570;520;725;700;836;772;684;632;635;779;725;605;701;723;834;740;678;837;
933;803;906;828;796;619;598;507;667;765;773;858;920;796;817;713;904;1003;827;762;805;736;
845;668;621;838;829;774;878;784;1048;773;880;837;1105;1133;1370;1254;1105;1064;986;890;913;
938;1115;1156;894;1339;1241;1104;1214;1083;1127;1301;1071;1060;1350;1110;1364;1407;1022;
1113;944;1077;1024;1061;1181;1119;964;863;770;1068;1255;1018;872;841;1113;1130;811;810;
995;1023;976;948;1005;956;1052;1404;1261;1138;1123;1262;1053;998;1032;1080;852;1078;928;
1266;1250;1159;1146;1006;836;1258;1082;996;797;697;909;933;1111;891;997;1194;662;932;767;
981;819;1004;1257;754;810;1337;1105;1006;1132;882;1228;941;941;953;783;902;911;1047;972;
942;1202;1288;1228;1202;1122;1155;1448];
lb=[0 0 0 0 0]; % lower bound of parameters
ub=[1 1 [] [] []]; % upper bound of parameters
al=0.1;
de=0.1;
mu=10055.76763;
eps_b=100.5577;
eps_s=893.7203;
k=length(b);
for i=1:k
m(i)=min(b(i),s(i))+max(b(i),s(i))/2;
f(i)=-1*eps_b+m(i)*log(eps_b/(mu+eps_b))+b(i)*log(mu+eps_b) % likelihood function
-1*eps_s+m(i)*log(eps_s/(mu+eps_s))+s(i)*log(mu+eps_s)
+log(al*(1-de)*exp(-mu)*(eps_s/(mu+eps_s))^(s(i)-m(i))*(eps_b/(mu+eps_b))^(-m(i))+al*de*exp(-mu)*(eps_b/(mu+eps_b))^(b(i)-m(i))*(eps_s/(mu+eps_s))^(-m(i))+(1-al)*(eps_s/(mu+eps_s))^(s(i)-m(i))*(eps_b/(mu+eps_b))^(b(i)-m(i)));
end
f=-sum(f);
set(0,'RecursionLimit',1000)
[al,de,mu,eps_b,eps_s]=fmincon('lik_fct',[0.1,0.1,10055.76763,100.5577,893.7203],[],[],[],[],lb,ub)
以下是错误提示:
Error using ==> fmincon
FMINCON cannot co
Error in ==> lik_fct at 503
[al,de,mu,eps_b,eps_s]=fmincon('lik_fct',[0.1,0.1,10055.76763,100.5577,893.7203],[],[],[],[],lb,ub)
[ 本帖最后由 ChaChing 于 2009-2-12 08:57 编辑 ] |