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

问题描述 投票:0回答:1

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

数学上,波动率的时间序列如下:

time series forvolatility

其中“平均x”是t-4和t + 5之间的x的平均值。

如何在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

r database time-series standard-deviation
1个回答
0
投票

这是一个正在做你想要的功能

# 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编程的具体内容。其他人阅读本文的好处与编程问题相比很少。的情况。

© www.soinside.com 2019 - 2024. All rights reserved.