r中的相关时间序列
correlation time series in r
我目前有一个看起来像这样的数据集(3 个变量和一个时间序列):
date variable value
01/01/16 A 1000
01/01/16 B 800
01/01/16 C 10
01/02/16 A 2000
01/02/16 B 1800
01/02/16 C 100
01/03/16 A 100
01/03/16 B 80
01/03/16 C 10
我想做的是每天计算所有三个变量(A-B、A-C、B-C)之间的相关性,这样我就可以将结果绘制成图表,日期在 x 轴和y 轴相关系数(图例为 A-B、A-C、B-C)。
如有任何帮助,我们将不胜感激!
我想这就是你想要的:
df <- read.csv(sep=" ",stringsAsFactors=F,text="date variable value
01/01/16 A 1000
01/01/16 B 800
01/01/16 C 10
01/02/16 A 2000
01/02/16 B 1800
01/02/16 C 100
01/03/16 A 100
01/03/16 B 80
01/03/16 C 10 ")
df$date <- strptime(df$date, format = "%m/%d/%y")
df$value <- as.numeric(df$value)
vars <- unique(df$variable)
nv <- length(vars)
npairs <- nv*(nv-1)/2
labs <- rep("", npairs)
cors <- rep(0, npairs)
k <- 1
for (i in 1:(nv-1)) {
vi <- vars[i]
si <- df[df$variable == vi,]$value
for (j in (i+1):nv) {
vj <- vars[j]
sj <- df[df$variable == vj,]$value
labs[k] <- sprintf("%s-%s",vi,vj)
cors[k] <- cor(si, sj)
k <- k+1
}
}
pdf <- data.frame(labs=labs,cors=cors)
ggplot(pdf) + geom_bar(aes(x=labs,y=cors),stat="identity")
产量:
我目前有一个看起来像这样的数据集(3 个变量和一个时间序列):
date variable value
01/01/16 A 1000
01/01/16 B 800
01/01/16 C 10
01/02/16 A 2000
01/02/16 B 1800
01/02/16 C 100
01/03/16 A 100
01/03/16 B 80
01/03/16 C 10
我想做的是每天计算所有三个变量(A-B、A-C、B-C)之间的相关性,这样我就可以将结果绘制成图表,日期在 x 轴和y 轴相关系数(图例为 A-B、A-C、B-C)。
如有任何帮助,我们将不胜感激!
我想这就是你想要的:
df <- read.csv(sep=" ",stringsAsFactors=F,text="date variable value
01/01/16 A 1000
01/01/16 B 800
01/01/16 C 10
01/02/16 A 2000
01/02/16 B 1800
01/02/16 C 100
01/03/16 A 100
01/03/16 B 80
01/03/16 C 10 ")
df$date <- strptime(df$date, format = "%m/%d/%y")
df$value <- as.numeric(df$value)
vars <- unique(df$variable)
nv <- length(vars)
npairs <- nv*(nv-1)/2
labs <- rep("", npairs)
cors <- rep(0, npairs)
k <- 1
for (i in 1:(nv-1)) {
vi <- vars[i]
si <- df[df$variable == vi,]$value
for (j in (i+1):nv) {
vj <- vars[j]
sj <- df[df$variable == vj,]$value
labs[k] <- sprintf("%s-%s",vi,vj)
cors[k] <- cor(si, sj)
k <- k+1
}
}
pdf <- data.frame(labs=labs,cors=cors)
ggplot(pdf) + geom_bar(aes(x=labs,y=cors),stat="identity")
产量: