我有一个包含许多时间序列的数据集.我想用盒子测试来判断每个系列的平稳性.我的循环可以很好地用于测试,但是如何将结果(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,]&lt;-df2[i,]"it:

for(i in 1:nrow(df2)) {       
    df2$p_value <- box$p.value(df2[i , ] <- df2[i ,])
}

这不管用. 有人能帮帮我吗?也许还有另一种功能?

推荐答案

您可以使用sapply和子集作为p值.

bres <- sapply(df, \(x) Box.test(x, type="Ljung-Box")[['p.value']])

我强烈建议明确地制定一本词典a,以避免错误.

a <- setNames(c("series1", "series2", "series3"), c('a', 'b', 'c'))

然后是cbind美元.

cbind(df2, p_value=bres[match(df2$d, a)])
#         d     e  f   p_value
# a series1 green 18 0.8206314
# b series2 black 24 0.6379121
# c series3   red 12 0.1574567

Data:

df <- structure(list(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)), row.names = c(NA, 
-6L), class = "data.frame")

df2 <- data.frame(d=c("series1", "series2", "series3"),
                  e=c("green", "black", "red"),
                  f=c(18, 24, 12))

R相关问答推荐

检测(并替换)字符串中的数学符号

在位置周围设定一个半径并识别该半径内的其他位置

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

R s iml包如何处理语法上无效的因子级别?'

多个模拟序列间的一种预测回归关系

找出二叉树中每个 node 在R中的深度?

R中边际效应包中Logistic回归的交互作用风险比

如何将SAS数据集的列名和列标签同时包含在r中GT表的表首?

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

如何根据数据帧中的值从该数据帧中提取值?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

派生程序包| ;无法检索';return()';的正文

减go R中列表的所有唯一元素对

为什么在写入CSV文件时Purrr::Pwalk不起作用

使用ggplot2中的sec_axis()调整次轴

变长向量的矢量化和

R:水平旋转图

将`magick`对象转换为原始向量

当某些ID的行数多于其他ID时,按ID对数据帧中的行进行采样

动态分组和计算分组依据