就是我用蒙特卡洛模拟,极大似然估计来求解一个问题。。。
u = normrnd(0,1,100,1);
Y = 3*B1 + 4*X +u
syms b1 b2 s;
f = ((2*pi*s)^(-50))*exp(-(1/(2*s))*sum((Ys-b1*B1-b2*X).*(Ys-b1*B1-b2*X)));
f2 = log(f);
df1 = diff(f2,b1); %对B1,B1,SIG分别求导;
df2 = diff(f2,b2);
df3 = diff(f2,s);
最后是要解一个方程组:
df1和df2和df3
用[b1,b2,s]=solve('df1=0','df2=0','df3=0') (ps:fsolve用过,貌似不行)
解出来b1,b2,s都为0.。。。。
但是,要是把df1,df2,df3的方程带到solve函数里面去再解,就能得到b1=3.??,b2=4.??,s=0
关键是要是模拟一万次,不是要人工代入公式一万次么,
求问怎么解决??
为什么[b1,b2,s]=solve('df1=0','df2=0','df3=0'),不对 |