繁体   English   中英

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

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

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

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

波动性的时间序列

其中“平均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

这是一个我想做你想做的功能

# 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编程的具体内容。其他人阅读这个问题的好处与可以应用于许多人的编程问题相比很少。的情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM