楼主: darkforever
10288 13

[问答] matlab中是用fminsearch最优化似然函数如何对参数进行t检验 [推广有奖]

  • 0关注
  • 2粉丝

讲师

85%

还不是VIP/贵宾

-

威望
0
论坛币
38129 个
通用积分
7.8959
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
2640 点
帖子
190
精华
0
在线时间
953 小时
注册时间
2009-5-16
最后登录
2025-4-30

楼主
darkforever 发表于 2012-6-23 21:17:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币


我做了一个模型,想对相关参数进行估计,因为已经有了log likelihood function,也用fminsearch这个函数优化得到了相关参数的值。但是能不能通过方式得到这些参数进行t检验,看看他们是否显著?

后来我又用mle(data,'nloglf',@nLogLik,'start',x0)这个函数做了一下,但是每次都有下面的错误
Subscripted assignment dimension mismatch.

Error in fminsearch (line 191)
fv(:,1) = funfcn(x,varargin{:});

Error in mlecustom (line 178)
        [phat,nll,err,output] = ...

Error in mle (line 228)
            [phat, pci] = mlecustom(data,varargin{:});

请大家指点一下,谢谢
二维码

扫码加我 拉你入群

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

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

关键词:fminsearch search MATLAB matla atlab 检验 function matlab Error

沙发
迷途mitu 发表于 2012-8-15 15:19:56
你的问题解决了吗?我用R编程,也得到了参数值,但是不知道怎么得到参数的显著水平,我们可以交流一下

藤椅
lustboy 发表于 2012-8-17 21:41:01
基本思路如下:
1)写出优化函数,即你最小化的那个函数;
2)求出它在最优值点处的海塞矩阵(要用到数值微分函数,不熟的话上网搜),这就是估计参数的方差矩阵;
3)求出这个矩阵的对角元素,开方,跟就是标准差;
4)根据对参数分布的假设(通常为正态分布)计算显著水平或者P值。

当然,如果计量熟的话,还有更为直接的方法,不需要求海塞矩阵,只需要求梯度即可,思路可以参见高级计量教材。

如果管用,其给个评价,谢谢!

板凳
darkforever 发表于 2012-8-18 04:51:01
lustboy 发表于 2012-8-17 21:41
基本思路如下:
1)写出优化函数,即你最小化的那个函数;
2)求出它在最优值点处的海塞矩阵(要用到数值 ...
很感谢你的回复,你的思路和matlab自身mle里面的算法差不多,但是关键在于Hessian矩阵自身在最优点的值是未知的,如果能够知道最优点的值,那实际上问题就解决了。求梯度的方法也有一个问题,就是只能在初值附近得到一个局部最优,因此最终结果对于初值敏感。

报纸
darkforever 发表于 2012-8-18 04:54:55
迷途mitu 发表于 2012-8-15 15:19
你的问题解决了吗?我用R编程,也得到了参数值,但是不知道怎么得到参数的显著水平,我们可以交流一下
我觉得如果已经求出了参数值,应该隐含着已经求出了std,可能在你的代码里没有包含显示这个值得语句吧。我现在改用遗传算法的那个工具包求了。具体求显著性还在研究中,可能我的参数值过多,Hessian矩阵不正定,看看还有什么办法。保持联系,我曾经用Gauss那个软件求过,相对简单些,不过不知道是局部解还是全局最优

地板
迷途mitu 发表于 2012-8-18 14:03:15
darkforever 发表于 2012-8-18 04:54
我觉得如果已经求出了参数值,应该隐含着已经求出了std,可能在你的代码里没有包含显示这个值得语句吧。我 ...
我得到了参数值,但是Hessian矩阵没办法求逆,Hessian矩阵的逆矩阵就是参数的协方差矩阵吧?但是不能求逆很奇怪。。。

7
迷途mitu 发表于 2012-8-18 14:06:43
lustboy 发表于 2012-8-17 21:41
基本思路如下:
1)写出优化函数,即你最小化的那个函数;
2)求出它在最优值点处的海塞矩阵(要用到数值 ...
是Hessian矩阵的逆是协方差矩阵还是它本身是协方差矩阵?
我写出了优化的函数,进行最优化之后它说:Solution not reliable....Problem Inverting Hessian
Hessian矩阵不能求逆,这是什么原因造成的呢?

8
lustboy 发表于 2012-8-18 14:56:21
我说我的具体操作吧,这样可能比较容易理解:
1)先要用优化函数(比如Fminsearch)得到待估参数的最优值(C*),因此,接下来最优点是确定的了;
2)然后求准则函数(即u1^2+u2^2+...+un^2)在(C*)处的梯度,这会得到一个NxK的矩阵(G),N是样本量,K是解释变量个数,(注意求最优值的时候可以取对数,但这里的准则函数不是对数化的,而且这里需要用到数值微分函数,不是通常的matlab微分或梯度命令);
3)协方差矩阵=s^2*(G'*G)^(-1),其中s^2是修正后的残差平方和。

9
lustboy 发表于 2012-8-18 15:02:06
我没有用过matlab的MLE命令,非线性回归和最大似然估计都是自己写函数和命令。
上面的问题,一方面是没有注意到检验时都在参数估计的那一点进行,二是混淆了普通梯度与某一点处数值梯度。

10
wailsion 学生认证  发表于 2015-4-24 09:12:20
lustboy 发表于 2012-8-17 21:41
基本思路如下:
1)写出优化函数,即你最小化的那个函数;
2)求出它在最优值点处的海塞矩阵(要用到数值 ...
请问,您说的得到海塞矩阵之后,应该再求逆,才得到方差矩阵吧?麻烦您回复一下,我想确定一下

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

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