我需要得到一个3年滚动返回工作(每个身份证3年的回报,每年)。
我尝试过使用PerformanceAnalytics包,但我一直收到一个错误,即我的数据不是时间序列。
当我使用这个函数时,它说的是对的,所以我完全不知道如何让3年的滚动回归工作。所以,我只需要有人提供给我的R代码,将产生3年的回报。
这是一个样本数据集
ppd_id FY TF_1YR
1 2001 -0.0636
1 2002 -0.0929
1 2003 0.1648
1 2004 0.1006
1 2005 0.1098
1 2006 0.0837
1 2007 0.1792
1 2008 -0.1521
1 2009 -0.1003
1 2010 0.0847
1 2011 0.0221
1 2012 0.1801
1 2013 0.146
1 2014 0.1202
1 2015 0.0105
1 2016 0.1022
1 2017 0.1286
1 2018 0.0929这是我的密码
library(smooth)
library(readr)
pensionreturns <- read_csv("pensionreturns.csv")
sma(pensionreturns, h=发布于 2022-03-27 14:22:20
假设:
DF2开始,这是一个重复的数据,这样就有2个id将数据转换为宽格式的动物园系列z,然后使用rollapplyr。如果在开始时不需要NA,则省略fill=参数。结果将是一个动物园系列的回报。(我们可以使用fortify.zoo (参见?fortify.zoo )将其转换为数据框架,但如果将其作为时间序列,则执行进一步的时间序列操作将更容易。)
library(zoo)
z <- read.zoo(DF2, index = 2, split = 1, FUN = c)
rollapplyr(z + 1, 3, prod, fill = NA) - 1给这个动物园系列赛:
1 2
2001 NA NA
2002 NA NA
2003 -0.010609049 -0.010609049
2004 0.162883042 0.162883042
2005 0.422740161 0.422740161
2006 0.323680900 0.323680900
2007 0.418212355 0.418212355
2008 0.083530596 0.083530596
2009 -0.100440641 -0.100440641
2010 -0.172530498 -0.172530498
2011 -0.002527919 -0.002527919
2012 0.308343674 0.308343674
2013 0.382282521 0.382282521
2014 0.514952431 0.514952431
2015 0.297228567 0.297228567
2016 0.247648627 0.247648627
2017 0.257004321 0.257004321
2018 0.359505217 0.359505217备注
DF <- structure(list(ppd_id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), FY = 2001:2018, TF_1YR = c(-0.0636,
-0.0929, 0.1648, 0.1006, 0.1098, 0.0837, 0.1792, -0.1521, -0.1003,
0.0847, 0.0221, 0.1801, 0.146, 0.1202, 0.0105, 0.1022, 0.1286,
0.0929)), class = "data.frame", row.names = c(NA, -18L))
DF2 <- rbind(DF, transform(DF, ppd_id = 2))https://stackoverflow.com/questions/71636970
复制相似问题