gpt4 book ai didi

r - 在自定义 R 函数中使用时间序列模型

转载 作者:行者123 更新时间:2023-12-04 07:15:59 25 4
gpt4 key购买 nike

我正在尝试创建一个 R 函数,它接受一个 tsibble 和列名,适合一些基本模型,并最终输出一个图(尽管绘图部分不是这个问题的主题)。
此时,我无法让以下代码工作:

base_line_models <- function(dataframe, column) {
col_name <- enquo(column)
#col_name <- as.name(column)


df_fit <- dataframe %>%
model(
Mean = MEAN(!!col_name),
`Naïve` = NAIVE(!!col_name),
Drift = NAIVE((!!col_name) ~ drift())
)

return(df_fit)
}

base_line_models(souvenirs, 'Sales')
# using the souvenirs tsibble from the fpp3 package
它返回: Error: 'call' must be a quoted call ,我已经搜索无济于事,对我来说没有意义,因为从我所看到的一切来看,我正在调用该函数。
我觉得这与 R 如何处理函数内部的数据帧有关,所以我也尝试使用 {{column}}{{col_name}}代替 enquo()/ !!column调用,但这没有奏效。
公平警告,我是一个 Python 人,所以我的方法可能不是标准的 R 语言。如果我的方法不正确,请随时指出。

最佳答案

你的代码基本正确;取消注释第二行 col_name <- as.name(column)并删除它上面的那个。我就是这样运行的,没有任何问题。
通常在使用 fpp3 时包,您可能需要考虑使用 tsibbles 而不是标准数据帧对象。当您的代码有效时,如果您希望添加最终会遇到使用数据帧对象的问题的附加功能,请考虑将它们转换为 tsibbles。它只需要一个简单的调整

library(fpp3)
library(tidyverse)

data("souvenirs")

base_line_models <- function(dataframe, column) {
myTsibble <- as_tsibble(dataframe)
col_name <- as.name(column)

tsibble_fit <- myTsibble %>%
model(
Mean = MEAN(!!col_name),
`Naïve` = NAIVE(!!col_name),
Drift = NAIVE((!!col_name) ~ drift())
)

return(tsibble_fit)
}



base_line_models(souvenirs, 'Sales')

关于r - 在自定义 R 函数中使用时间序列模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68763190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com