楼主: 米思奇
2827 5

[问答] 帮忙看看matlab极大似然估计程序哪出错了 [推广有奖]

  • 0关注
  • 2粉丝

本科生

73%

还不是VIP/贵宾

-

威望
0
论坛币
1757 个
通用积分
0.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
787 点
帖子
29
精华
0
在线时间
174 小时
注册时间
2012-11-7
最后登录
2025-10-27

楼主
米思奇 发表于 2014-10-10 22:01:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
[para,std_dev]=my_mle('gh_log_fun',[-1;25;1;0.0005;0.02],y)
??? Attempt to execute SCRIPT gh_log_fun as a function:
E:\软件包\matlab\bin\gh_log_fun.m

Error in ==> fminsearch at 205
fv(:,1) = funfcn(x,varargin{:});

Error in ==> my_mle at 25
[para,fv]=fminsearch(fun,para0,[],2,varargin{:});

function[para,standard_deviation,fv]=my_mle(fun,para0,varargin)%estimate parameters and standard errors when using maximum likelihood%estimation(MLE)%input%fun:a function defined by users for calculating log probability density%function(pdf) and negative sum of logatithm of pdf%para0:given initial parameters%varargin;other needed inputs required by fun%output%para:estimated parameters%standard_deviation:standard deviations of estimated parameters%fv:maximized likelihood function value%%%%%%%%%%%%%%%%%%%%%%example1:estima mean and standard devition by realizations of a random%variable which is normally distributed%function f=mynormpdfsum(x,num,y)%yy=1/sqrt(2*pi)/x(2)*exp(-(y-x(1)).^2/2/x(2)^2);%if num==1%%(note: it must set to 1)%f=log(yy);%else f=-sum(log(yy));end%%%%%%%%%%%%%%y=2+3*randn(5000,1);%[para,standard_deviation]=my_mle('mynormpdfsum',[0;2],y)para0=para0(:);[para,fv]=fminsearch(fun,para0,[],2,varargin{:});fv=-fv;d=my_numerical_derivative(fun,para,1,varargin{:});standard_deviation=sqrt(diag(pinv(d'*d)));

function f=my_numerical_derivative(fun,parameter,varargin)%input%fun:the name of a function%parameter:given parameter with respect to which first-order derivative%is calculated%varargin:other needed inputs reguired by fun%output%f:numerical first order derivative of fun at parametern=length(parameter);for i =1:n    a=zeros(n,1);    a(i)=max(parameter(i)*le-6,le-6);    y1(;,i)=feval(fun,parameter+a,varargin{:});    y2(:,i)=feval(fun,parameter-a,varargin{:});    f(:,i)=(y1(:,i)-y2(:,i)/2/a(i));end



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB 极大似然估计 matla atlab 极大似然 matlab 程序

沙发
米思奇 发表于 2014-10-10 22:02:32
  1. function[para,standard_deviation,fv]=my_mle(fun,para0,varargin)
  2. %estimate parameters and standard errors when using maximum likelihood
  3. %estimation(MLE)
  4. %input
  5. %fun:a function defined by users for calculating log probability density
  6. %function(pdf) and negative sum of logatithm of pdf
  7. %para0:given initial parameters
  8. %varargin;other needed inputs required by fun
  9. %output
  10. %para:estimated parameters
  11. %standard_deviation:standard deviations of estimated parameters
  12. %fv:maximized likelihood function value
  13. %%%%%%%%%%%%%%%%%%%%%
  14. %example1:estima mean and standard devition by realizations of a random
  15. %variable which is normally distributed
  16. %function f=mynormpdfsum(x,num,y)
  17. %yy=1/sqrt(2*pi)/x(2)*exp(-(y-x(1)).^2/2/x(2)^2);
  18. %if num==1%%(note: it must set to 1)
  19. %f=log(yy);
  20. %else f=-sum(log(yy));end
  21. %%%%%%%%%%%%%
  22. %y=2+3*randn(5000,1);
  23. %[para,standard_deviation]=my_mle('mynormpdfsum',[0;2],y)
  24. para0=para0(:);
  25. [para,fv]=fminsearch(fun,para0,[],2,varargin{:});
  26. fv=-fv;
  27. d=my_numerical_derivative(fun,para,1,varargin{:});
  28. standard_deviation=sqrt(diag(pinv(d'*d)));
复制代码

藤椅
米思奇 发表于 2014-10-10 22:03:42
  1. function f=my_numerical_derivative(fun,parameter,varargin)
  2. %input
  3. %fun:the name of a function
  4. %parameter:given parameter with respect to which first-order derivative
  5. %is calculated
  6. %varargin:other needed inputs reguired by fun
  7. %output
  8. %f:numerical first order derivative of fun at parameter
  9. n=length(parameter);
  10. for i =1:n
  11.     a=zeros(n,1);
  12.     a(i)=max(parameter(i)*le-6,le-6);
  13.     y1(;,i)=feval(fun,parameter+a,varargin{:});
  14.     y2(:,i)=feval(fun,parameter-a,varargin{:});
  15.     f(:,i)=(y1(:,i)-y2(:,i)/2/a(i));
  16. end
复制代码

板凳
gssdzc 在职认证  发表于 2014-10-10 22:15:06
帮忙给顶起来的

报纸
傻乎乎的猪 发表于 2014-10-11 08:56:50
写得真好                                                                        
                                       
                                                     
                                                     
                                             
                                                                 
                                                                                 

地板
米思奇 发表于 2014-10-11 09:44:39
这个代码里其中那个 le写错了,应该是1e 模型就对了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:50