如何从R中的函数返回中获取变量值

时间:2019-05-01 03:00:11

标签: r

这里是一个例子:

myFun <- arima(x, order=c(0, 0, 1))
myFun

运行时,我得到了输出:

Call:
arima(x = x, order = c(0, 0, 1))

Coefficients:
         ma1  intercept
      0.6023     0.1681
s.e.  0.0827     0.1424

sigma^2 estimated as 0.7958:  log likelihood = -130.7,  aic = 267.39

我知道我可以通过myFun$aic获得aic的值,但是如何获得:

  • 系数ma1,0.6023
  • 系数,例如,0.0827
  • 截距系数0.1681
  • sigman ^ 2估计为0.7958
  • 等。

我已经从帮助页面help中进行搜索,但是我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

要获取系数,可以执行coef(myFun)myFun$coef

myFun$coef
#      ma1 intercept 
#0.9999998 5.4999988 

Sigma ^ 2估计

myFun$sigma2
#[1] 2.750001

和标准错误

sqrt(diag(vcov(myFun)))
#      ma1 intercept 
#0.3162275 1.0041626 

和对数可能性

myFun$loglik
#[1] -20.44634

数据

myFun <- arima(1:10, order=c(0, 0, 1))
myFun

#Call:
#arima(x = 1:10, order = c(0, 0, 1))

#Coefficients:
#         ma1  intercept
#      1.0000     5.5000
#s.e.  0.3162     1.0042

#sigma^2 estimated as 2.75:  log likelihood = -20.45,  aic = 46.89

答案 1 :(得分:1)

我们可以使用tidy/glance中的broom,它可以在一个调用中提取大部分输出

library(broom)

rowr::cbind.fill(tidy(myFun), glance(myFun))
#       term    estimate  std.error     sigma    logLik      AIC      BIC
#1       ma1 -0.01357280 0.12869087 0.9847428 -140.3565 286.7129 294.5284
#2 intercept  0.07901125 0.09716588 0.9847428 -140.3565 286.7129 294.5284

要获取各个组件,则更容易检查结构

str(myFun)

然后我们发现它是一个命名的list。因此,像提取任何其他list元素一样提取元素,即对单个$元素(按名称或索引)和[[list[用于多个元素

有关更多信息,我们也可以选中此link

数据

set.seed(24)
x <- rnorm(100)
myFun <- arima(x, order=c(0, 0, 1))