【问题标题】:What package can plot/analyze fitting result of optim() function easily?什么包可以轻松绘制/分析 optim() 函数的拟合结果?
【发布时间】:2014-01-27 12:30:32
【问题描述】:

我正在尝试使用 lm() 和 optim() 分析线性回归的结果。

实际上,lm() 函数的结果很容易被相关函数绘制或分析,例如:

fit <- lm(y~x1+x2, data=dat)

# I can plot 'Fitted values', 'Theoretical Quantiles', 'Fitted values' and 'Leverage' by plot() easily.

plot(fit)
durbinWatsonTest(fit)

但是 optim() 的结果不能被 plot() 或其他函数接受,例如:

  > result.opt <- optim(par = c(0, 0, 0, 0,0, 0, 0),
                                      min.OLS, 
                                      data = dat 
                       )

> result.opt
$par
[1]  811.06933  285.10077 -476.69048  144.11307  273.46945  -30.65947 -279.02271

$value
[1] 152364.6

$counts
function gradient 
     502       NA 

$convergence
[1] 1

$message
NULL

> plot(result.opt)
Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' is a list, but does not have components 'x' and 'y'

什么包或方法可以做结果分析来绘制lm的结果?

提前致谢。

【问题讨论】:

  • 我怀疑有一个; optim() 是一个通用的优化工具。你可以通过它来优化任何东西,它会试一试,但是一个包作者怎么会知道你用optim()做的事情是适合OLS的,但是其他一些乔用optim()做的事情是一个GLMM适合例如?适用于一种合身的方法不太可能适用于另一种。您只需要自己处理这个问题,也许可以通过将 optim() 调用包装在其他内容中,从而生成此类绘图所需的额外信息。
  • 您好,Gavin,感谢您的意见。你的担心是有道理的。 optim() 是一个通用工具,他们不知道用户提供了什么方法,因此无法给出具体的情节。我们可以通过某些方法将 optim() 的返回结果转换为 lm() 以便我可以应用 OLS 的例程吗?
  • 您可能需要检查stats4::mle:它只是optim 的包装,但它添加了您在通过最大似然拟合模型时可能会发现有趣的所有信息——而且还有plot 方法。
  • 我认为没有plot.mle 函数。 bbmle::mle2 的功能稍多一些,但可能不是您想要的。
  • 我指的是plot 对象的plot 方法。

标签: r optimization plot linear-regression


【解决方案1】:

您要求的是 optimplot 方法,但我相信 optim 返回一个没有特定类的列表,因此无法为其分配方法。你可以很容易地编写一个小函数来获取输出列表的par 元素并使用它来生成要绘制的数据。

【讨论】:

  • 感谢您的回答。是的,我意识到我的请求不适合 OOP 的编程模型,因此我必须为 optim() 定义自己的方法。
猜你喜欢
  • 1970-01-01
  • 2018-07-16
  • 2015-04-16
  • 2018-12-12
  • 2020-08-04
  • 2011-03-10
  • 1970-01-01
  • 2013-03-17
  • 2011-04-23
相关资源
最近更新 更多