楼主: yuhanxin
6726 7

请高手指点以下t分布最大似然估计的算法 [推广有奖]

  • 0关注
  • 0粉丝

小学生

7%

还不是VIP/贵宾

-

威望
0
论坛币
93 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
111 点
帖子
5
精华
0
在线时间
0 小时
注册时间
2007-1-3
最后登录
2014-5-6

楼主
yuhanxin 发表于 2008-10-9 20:00:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

请高手指点以下t分布最大似然估计的算法:

function va=ml_t(data)
    [m,n]=size(data);
    n=max(m,n);
    syms v x;
    tmp = gamma((v+1)/2)/gamma(v/2);
    f = tmp/(sqrt(v*pi)*(1+(x^2)/v)^((v+1)/2));
    log_f=log(f);
    dlog_f=diff(log_f,'v');
    L=sym('0');
    for k=1:n,
        l=subs(dlog_f,x,data(k));
        L=L+l;
    end
    va=solve(L);

  这是我自己编的程序。我用trnd命令生成数据验证过,例如用trnd(3,30,1)生成30个服从自由度为3的t分布的数据,再利用这个函数估计参数是否接近3。结果是这套程序能够顺利通过。但是遇到以下问题:

1、程序运行过程非常非常慢!我逐条语句检查过,“瓶颈”在for循环和最后的solve这两步,而这两处之所以出现“瓶颈”是因为“l=subs(dlog_f,x,data(k));”的结果本身就相当复杂,经过几十次循环相加之后就更加复杂,这又导致最终的L相当复杂,解起来很费劲。

2、结果似乎大大地偏离了原来设定的自由度。例如上面提到的用trnd(3,30,1)生成30个服从自由度为3的t分布的数据,结果似乎远离3!(不过由于每次运行这个程序都需要花很多时间,试得不多,而且每次的数据量都不大)

我希望能够简化这套程序,不知可行不可行?或者有没有其他更好的思路?

二维码

扫码加我 拉你入群

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

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

关键词:最大似然估计 高手指点 最大似然 似然估计 t分布 高手 指点 算法

沙发
jyliao 发表于 2008-10-10 09:17:00
data = trnd(3,800,1);
t_hand = @tpdf;
[p,pci] = mle(data, 'PDF',t_hand, 'start',0.1)

[此贴子已经被作者于2008-10-10 9:21:47编辑过]

藤椅
yuhanxin 发表于 2008-10-10 13:53:00

jyliao兄:你的代码我运行过,有错,系统表示输入的变量太多。有几个问题我想问问你:

1、你用的matlab是什么版本的?

2、@tpdf表示什么?关于@的用法,一般的matlab教程会在什么内容的章节中提到?

板凳
jyliao 发表于 2008-10-10 15:10:00

jyliao兄:你的代码我运行过,有错,系统表示输入的变量太多。有几个问题我想问问你:

1、你用的matlab是什么版本的?  
   2006b (7.3.0) with statsitics toolbox

2、@tpdf表示什么?关于@的用法,一般的matlab教程会在什么内容的章节中提到? doc
  function handle  (tpdf = pdf of t-distribution)

[此贴子已经被作者于2008-10-10 15:11:24编辑过]

报纸
yuhanxin 发表于 2008-10-10 18:41:00

jyliao兄:你肯定你的代码是可以运行的吗?我运行过是出错的:

??? Error using ==> mle
Too many input arguments.

地板
jyliao 发表于 2008-10-11 06:52:00

This is the result in my Matlab Command window

>> data = trnd(3,800,1);mle(data, 'PDF',@tpdf, 'start',1)

ans =

    3.1431

7
yuhanxin 发表于 2008-10-14 22:07:00
jyliao兄,非常感谢!你的代码是没问题的!只是我的版本太低了,我的是6.0的,呵呵!

8
normalboy 发表于 2009-2-28 15:04:00
很好,学到很多,最近正在研究这个呢,呵呵,谢谢

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

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