我有一个包含许多时间序列的数据集.我想用盒子测试来判断每个系列的平稳性.我的循环可以很好地用于测试,但是如何将结果(x?和p值)作为新列导出到现有的DataFrame(每个时间序列作为行)?
以下是我的数据帧示例:
a <- c(0.2569, 0.0145896, 0.0369, 0.025986, 0.12569, 0.3695)
b <- c(0.125, 0.04582, 0.2569, 0.256369, 0.25698, 0.1456)
c <- c(0.2584, 0.05698, 0.1258, 0.2569, 0.098563, 0.1569)
df <- data.frame(a,b,c)
在这里的循环,它工作得很好,并为我提供了每个时间序列x?和p值:
for(i in 1:ncol(df)) {
box <- Box.test(df[ , i] <- df[ , i], type = "Ljung-Box")
print(box)
}
现在,应该将结果传输到数据帧中的空列,如下所示:
d <- c("series1", "series2", "series3")
e <- c("green", "black", "red")
f <- c(18, 24, 12)
p_value <- NA #to create an empty column
x <- NA
df2 <- data.frame(d,e,f,p_value,x)
我的第一个 idea 是:
df2$p_value <- box$p.value
但在这里,我在每一行都得到了相同的p值.
我想,我必须用一个新的循环来做这件事,但我现在不在这里如何实现"df2[i,]<;-df2[i,]"it:
for(i in 1:nrow(df2)) {
df2$p_value <- box$p.value(df2[i , ] <- df2[i ,])
}
这不管用. 有人能帮帮我吗?也许还有另一种功能?