新手小白问一个问题,为什么分别使用两种调用函数的方法进行极大似然估计,后者会报错呢?
(1)方法一:在同一个脚本里,建立匿名函数,进行极大似然估计(出自:http://www.ilovematlab.cn/thread-162705-2-1.html)
% 定义样本观测值矩阵
>> x = [0.7917,0.8448,0.9802,0.8481,0.7627
0.9013,0.9037,0.7399,0.7843,0.8424
0.9842,0.7134,0.9959,0.6444,0.8362
0.7651,0.9341,0.6515,0.7956,0.8733];
% 以匿名函数方式定义密度函数,返回函数句柄PdfFun
>> PdfFun = @(x,a,t) a*t*x.^(t-1).*(x>0 & x<1);
% 调用mle函数求参数最大似然估计值和置信区间
>> [phat,pci] = mle(x(:),'pdf',PdfFun,'start',[1,3],'lowerbound',[0,0],'upperbound',[2,6])
phat =
2.0000 5.1502
pci =
1.1235 2.8931
2.8765 7.4073
(2)方法二:我尝试着另外建立m函数文件,再调用,然而总是报错。
主程序:
>> x = [0.7917,0.8448,0.9802,0.8481,0.7627
0.9013,0.9037,0.7399,0.7843,0.8424
0.9842,0.7134,0.9959,0.6444,0.8362
>> [phat,pci] = mle(x,'pdf',PdfFun,'start',[1,3],'lowerbound',[0,0],'upperbound',[2,6])
m函数文件:
>>function [ll] = PdfFun(x,a,t)
ll = a*t*x.^(t-1).*(x>0 & x<1);
end
出现错误:
错误使用 PdfFun (line 4)
输入参数的数目不足。
谢谢~!