如何在 R 中输入增长率和年度销售数据的滚动 window 标准差?

How can I input growth rates and the rolling window standard deviation of yearly sales data in R?

我有这个数据集,其中包括给定年份一家公司的所有销售额(公司代码 = gvkey,年份 = fyearq,销售额 = saley)。我想检查这些销售额的波动性,它被定义为销售额增长率 (x) 的十年滚动 windows 标准差的时间序列。为此,我还需要计算增长率。

从数学上讲,波动率的时间序列如下所示:

其中 "average x" 是 x 在 t-4 和 t+5 之间的平均值。

我如何在 R 中输入这个?我如何计算我需要的增长率?

我正在处理的数据示例如下所示:

        gvkey   fyearq      saley
1        1004    1978     26.669
2        1004    1979     32.563
3        1004    1980     30.454
4        1004    1981     41,766
5        1004    1982     40.465
6        1004    1983     40.475
7        1004    1984     52.723
8        1004    1985     53.386
9        1004    1986     66.376
10       1004    1987     74.543
11       1004    1988     90.007
12       1004    1989     108.635
13       1004    1990     116.092

这是一个可以做你想做的事情的函数

# create data
n <- 100
saley <- rnorm(n, 100, 5)
gvkey <- factor(c(rep("A", n/2), rep("B", n/2)))
fyearq <- c(1980:(1980+n/2-1), 1992:(1992+n/2-1))
df <- data.frame(saley, gvkey, fyearq)

# function for growth ratea
growth_rate <- function(x){
 out <- c(NA,  x[2:length(x)]/ x[1:(length(x)-1)])
return(out)
}

# function for volatility  
volatility <- function(x){
out <- rep(NA, length(x))
for(i in (1+4):(length(x)-5)){
out[i] <- sqrt((x[i] - mean(x[(i-4):(i+5)]))**2 /10)
}
return(out)
}

# apply function for growth rates
df$growth_rate <- do.call("c", by(df$saley, df$gvkey, growth_rate))

# applying function for volatility
df$volatility <- do.call("c", by(df$growth_rate, df$gvkey, volatility))

df

我试图回答这个问题,尽管对我来说这不是一个好问题,因为它要求一个完整的方法而不是询问一些关于使用 R 编程的具体问题。与编程问题相比,其他人阅读这篇文章的好处很小可以应用于很多情况。