我有一个包含许多时间序列的数据集,我想使用箱形检验来检查每个序列的平稳性,我的循环可以很好地进行检验,但是我如何将结果(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)
}
现在,结果应传输到 Dataframe 中的空列,如下所示:
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)
我的第一个想法是:
df2$p_value <- box$p.value
但是这里我在每一行都得到了相同的p值。
我想,我必须用一个新的循环来完成它,但这里我不知道如何实现“df 2 [i,]〈-df 2 [i,]”它:
for(i in 1:nrow(df2)) {
df2$p_value <- box$p.value(df2[i , ] <- df2[i ,])
}
这个坏了,谁能帮帮我,换个功能?
1条答案
按热度按时间jm81lzqq1#
可以使用
sapply
和subset作为p值。我强烈建议明确地制定字典
a
以避免错误。然后
cbind
。