D******6 发帖数: 6211 | 1 【 以下文字转载自 Statistics 讨论区 】
发信人: Doha2006 (花猫), 信区: Statistics
标 题: 请教matlab non-linear optimization的问题
发信站: BBS 未名空间站 (Fri Jan 7 23:39:25 2011, 美东)
我需要用一个non-linear optimization function来estimate一个model,近似于logit
model,用maximum likelihood estimation。
如果用maxlik,其实这是一个min函数,就是名字叫max,从这个网站下载的,http://www.spatial-econometrics.com/
结果有点奇怪,不是指我的model参数奇怪,而是maxlik输出的结果如下:
CONVERGENCE CRITERIA MET: Change in Objective Function
iteration function value dfunc
0 2301.06004609 1000.00000000
iteration function value dfunc
1 1966.10277862 0.17036610
iteration function value dfunc
2 1965.50818039 0.00030252
iteration function value dfunc
3 1967.81330103 -0.00117141
1.如果用结果result.f查看,就给最后一个iteration的function value,可是明明是
iteration 2的function value才是最小的啊。不止这一个,我随便运行了很多maxlik
,它总是给最后一个iteration作为optimal,可是,有的时候很明显第一个iteration
的value是optimum啊。我糊涂了。是不是我解读错了输出结果?
2.我明白dfunc value接近0是极值,因为那时一阶导数吧。那么如果存在一个情况是前
面的iteration的function value很小,可是导数还很大,说明在往上走,那么即使后
来走到了一个极值,也该回头比比看看是不是最小吧,算法不会这么差吧,一点不回头?
如有解答,十分感谢! |
p*****e 发帖数: 16417 | 2 汗,多哈是越来越专业了。
logit
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 【 以下文字转载自 Statistics 讨论区 】 : 发信人: Doha2006 (花猫), 信区: Statistics : 标 题: 请教matlab non-linear optimization的问题 : 发信站: BBS 未名空间站 (Fri Jan 7 23:39:25 2011, 美东) : 我需要用一个non-linear optimization function来estimate一个model,近似于logit : model,用maximum likelihood estimation。 : 如果用maxlik,其实这是一个min函数,就是名字叫max,从这个网站下载的,http://www.spatial-econometrics.com/ : 结果有点奇怪,不是指我的model参数奇怪,而是maxlik输出的结果如下: : CONVERGENCE CRITERIA MET: Change in Objective Function : iteration function value dfunc
|
D******6 发帖数: 6211 | 3 唔。。。我冲进来一看,空激动一场。
这个破matlab,很闹心。
【在 p*****e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 汗,多哈是越来越专业了。 : : logit
|
p*****e 发帖数: 16417 | 4 囧~
偶不是专家啊。
你这通篇,我就看懂了matlab
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 唔。。。我冲进来一看,空激动一场。 : 这个破matlab,很闹心。
|
D******6 发帖数: 6211 | 5 那就行啊,我也是不久以前才知道这么个破软件。
【在 p*****e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 囧~ : 偶不是专家啊。 : 你这通篇,我就看懂了matlab
|
p*****e 发帖数: 16417 | 6 嗯,你有没有放Math版问问?
那里专家可能比统计的多些。
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 那就行啊,我也是不久以前才知道这么个破软件。
|
b*****l 发帖数: 9499 | 7 啊,我现在正在用 maximum likelihood 来做 parameter estimation。用得是 R 的
mle 和 nlm,都还可以,推荐一下。
对于你说的问题哈,我猜是算法导致的。程序可能设定了 tolerance,只要找到了最低
点的范围,并且最后的值到最低点间的距离小于预设的 tolerance,就作为最后结果了
。毕竟数值计算追求的是速度和精度的平衡,而且很多时候永远不可能绝对精确么。要
是我来写算法,估计也会这么做。
当然了哈,用最低点两边的值和一阶导数进一步做一个内插可能更 decent 一些,或者
至少求个 min 也好,毕竟效费比很高么,让人忍不住想这么挖掘一下。但是依然浪费
了一次计算时间啊:只要达到了需要的精度,哪怕再做轻微的计算就能极大提高精度,
那也是浪费啊。
logit
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 那就行啊,我也是不久以前才知道这么个破软件。
|
a*********7 发帖数: 30080 | 8 嗯,对于多哈的问题(2),我想这个程序不记录上一次结果、不回头做对比,一个原
因可能是:有的funciton参数可能相当多(比如说参数可以是每个点的weight,而一个
dataset可以有数以万计甚至百万计的点
),不光对比费时间,记忆这些参数也可能很费空间。
所以象河马说的,只要差得不多,就无所谓了。
我不了解这个程序,纯属猜测。
【在 b*****l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 啊,我现在正在用 maximum likelihood 来做 parameter estimation。用得是 R 的 : mle 和 nlm,都还可以,推荐一下。 : 对于你说的问题哈,我猜是算法导致的。程序可能设定了 tolerance,只要找到了最低 : 点的范围,并且最后的值到最低点间的距离小于预设的 tolerance,就作为最后结果了 : 。毕竟数值计算追求的是速度和精度的平衡,而且很多时候永远不可能绝对精确么。要 : 是我来写算法,估计也会这么做。 : 当然了哈,用最低点两边的值和一阶导数进一步做一个内插可能更 decent 一些,或者 : 至少求个 min 也好,毕竟效费比很高么,让人忍不住想这么挖掘一下。但是依然浪费 : 了一次计算时间啊:只要达到了需要的精度,哪怕再做轻微的计算就能极大提高精度, : 那也是浪费啊。
|
|
D******6 发帖数: 6211 | 9 对呀,这个说得对头。但是,我现在就是在用Matlab,不是R,不想来回转换了。觉得
如果R能做,Matlab也应该能做啊。以前放弃R也是因为R的help不清楚,又是免费的,
恐怕不可靠,就用Matlab了,没有想到Matlab也这样不清楚。
是,你说得这些都有道理,只是既然maxlik这么常用的function,他们怎么能编成这样
含糊。。。
【在 b*****l 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 啊,我现在正在用 maximum likelihood 来做 parameter estimation。用得是 R 的 : mle 和 nlm,都还可以,推荐一下。 : 对于你说的问题哈,我猜是算法导致的。程序可能设定了 tolerance,只要找到了最低 : 点的范围,并且最后的值到最低点间的距离小于预设的 tolerance,就作为最后结果了 : 。毕竟数值计算追求的是速度和精度的平衡,而且很多时候永远不可能绝对精确么。要 : 是我来写算法,估计也会这么做。 : 当然了哈,用最低点两边的值和一阶导数进一步做一个内插可能更 decent 一些,或者 : 至少求个 min 也好,毕竟效费比很高么,让人忍不住想这么挖掘一下。但是依然浪费 : 了一次计算时间啊:只要达到了需要的精度,哪怕再做轻微的计算就能极大提高精度, : 那也是浪费啊。
|
a*********7 发帖数: 30080 | 10 呃,这个你有点冤枉Matlab。你用的那个是第三方编写的程序,也是免费的。。。
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 对呀,这个说得对头。但是,我现在就是在用Matlab,不是R,不想来回转换了。觉得 : 如果R能做,Matlab也应该能做啊。以前放弃R也是因为R的help不清楚,又是免费的, : 恐怕不可靠,就用Matlab了,没有想到Matlab也这样不清楚。 : 是,你说得这些都有道理,只是既然maxlik这么常用的function,他们怎么能编成这样 : 含糊。。。
|
D******6 发帖数: 6211 | 11 哦,也是免费的?太过分了。。。的确,我问了几个人了,人家都不用。那个教授很过
分,为啥推荐一个大家都不用的函数让我用?
【在 a*********7 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 呃,这个你有点冤枉Matlab。你用的那个是第三方编写的程序,也是免费的。。。
|
a*********7 发帖数: 30080 | 12 嗯,大家都可以编matlab function,让大家分享。
官方类似的也有,你看这个合不合用:
http://www.mathworks.com/help/toolbox/stats/mle.html
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 哦,也是免费的?太过分了。。。的确,我问了几个人了,人家都不用。那个教授很过 : 分,为啥推荐一个大家都不用的函数让我用?
|
D******6 发帖数: 6211 | 13 奥,谢谢~~
我的model有点特异,这么标准的mle 函数能不能用不好说,我也找到了几个别的
optimization function,fminsearch什么的,看来只好换函数了。
不过那个旧函数,别说,如果要是算法够好,其实输入输出比较简单明了,所以我也以
为是个好函数。
【在 a*********7 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 嗯,大家都可以编matlab function,让大家分享。 : 官方类似的也有,你看这个合不合用: : http://www.mathworks.com/help/toolbox/stats/mle.html
|