0

我正在使用最大化可能性的方法拟合一些分布。R“maxLogL”中实现的方法是一个很棒的工具,效果很好。文档:

AIC 和 BIC 使用汇总函数打印,但我想将这些值保留在变量中。这是您可以轻松重现的代码:

library(EstimationTools)

set.seed(10)
z <- rnorm(n = 1000, mean = 0.1, sd = 1)
fit1 <- maxlogL(x = z, dist = 'dnorm', start=c(0, 2), lower = 0, upper = 2)
a <-summary(fit1)

打印以下内容:

Optimization routine: nlminb 
Standard Error calculation: Hessian from optim 

       AIC      BIC
  2824.494 2820.494

     Estimate  Std. Error
mean  0.011375     0.0313
sd    0.991346     0.0222

我的问题是:

  1. 如何将 AIC 和 BIC 保存在变量中?
  2. 对数似然的最大值是否保存在某处?我可以使用 BIC 和 AIC 的逆向工程来获得它,但我想避免这种情况。

谢谢

PD:我特别想使用 maxLogL 函数。

4

2 回答 2

1

我很抱歉,因为我以前没有看过这篇文章。从以前的一些版本开始,我们启用了一些通用方法,包括你提到的那些。最近我们发布了2.0.0 版本。让我们以之前的例子为例:

library(EstimationTools)

set.seed(10)
z <- rnorm(n = 1000, mean = 0.1, sd = 1)
fit1 <- maxlogL(x = z, dist = 'dnorm', start=c(0, 2), lower = 0, upper = 2)
summary(fit1)

_______________________________________________________________
Optimization routine: nlminb 
Standard Error calculation: Hessian from optim 
_______________________________________________________________
       AIC      BIC
  2824.494 2834.309
_______________________________________________________________
     Estimate  Std. Error Z value Pr(>|z|)    
mean   0.11137    0.03135   3.553 0.000381 ***
sd     0.99135    0.02217  44.722  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
_______________________________________________________________

为了将 AIC、BIC 和对数似然保存在一个变量中,只需调用通用函数:

myAIC <- AIC(fit1)
myBIC <- BIC(fit1)
mylogL <- logLik(fit1)

然后,您可以打印其中任何一个

>myAIC
[1] 2824.494
> myBIC
[1] 2834.309
> mylogL
'log Lik.' -1410.247 (df=2)

希望这可能有用。感谢您对EstimationTools.

最好的祝愿。

于 2020-08-03T13:16:19.760 回答
0

我对问题 1 达成的更接近的解决方案是:

results <- capture.output(summary(fit1))

它将控制台输出保存到一个变量。然而,这是一个烦人的解决方案,因为那时我需要处理文本。应该有一些简单而更好的东西。

于 2020-03-29T11:57:21.463 回答