我希望最终能够在各种统计属性中绘制变化(收敛到真值),因为更多的观察被添加到数据集中,并且在数据的一系列随机排列上迭代地这样做。我想使用PerformanceAnalytics中的apply.fromstart
来生成随着数据集增长而变化的统计信息。
我的数据集如下所示:
qpcr_a100p.z <-
structure(c(115.3, 108.4, 112.8, 101, 107.6, 84.9, 87.7, 94.7,
108.3, 107.3, 115, 79.1, 70.1, 61, 125.5, 111.1, 67.7, 119.4,
85.5, 109.3, 68.5, 98.3, 71.8, 81.6, 96, 140.8, 75.3, 83.6, 90.6,
107.5), index = c(30, 94, 103, 104, 114, 120, 155, 234, 240,
272, 289, 314, 439, 492, 502, 544, 547, 557, 564, 592, 656, 775,
783, 803, 805, 855, 856, 870, 929, 985), class = "zoo")
但是,当我尝试运行apply.fromstart
时出现错误:
> library(PerformanceAnalytics)
> apply.fromstart(qpcr_a100p.z, FUN = "mean", gap = 1)
Error in 1:columns : argument of length 0
我尝试了apply.fromstart
命令的一些变体,包括:
> apply.fromstart(qpcr_a100p.z[,1,drop=FALSE], FUN = "mean", gap = 1)
但我仍然得到同样的错误。
答案 0 :(得分:0)
很明显,函数apply.fromstart
中的数据类型(我认为问题是变量的时间)不匹配。如果您的zoo对象名为qpcr_a100p.z
,我建议您使用此解决方法:
dat=na.omit(as.xts(as.ts(qpcr_a100p.z)))
apply.fromstart(dat, FUN = "mean", gap = 1)
产生以下结果:
> as.numeric(apply.fromstart(dat, FUN="mean", gap=1))
[1] 115.30000 111.85000 112.16667 109.37500 109.02000 105.00000 102.52857
[8] 101.55000 102.30000 102.80000 103.90909 101.84167 99.40000 96.65714
[15] 98.58000 99.36250 97.50000 98.71667 98.02105 98.58500 97.15238
[22] 97.20455 96.10000 95.49583 95.51600 97.25769 96.44444 95.98571
[29] 95.80000 96.19000
答案 1 :(得分:0)
错误是因为您的qpcr_a100p.z
zoo对象没有dim
属性,所以从技术上讲它没有任何列。此外,apply.fromstart
需要基于时间的索引。
因此设置dim
并将索引转换为Date,该函数将起作用。
dim(qpcr_a100p.z) <- c(NROW(qpcr_a100p.z),NCOL(qpcr_a100p.z))
index(qpcr_a100p.z) <- as.Date(index(qpcr_a100p.z), origin="1970-01-01")
out <- apply.fromstart(qpcr_a100p.z, FUN = "mean", gap = 1)
# convert the index back to numeric, if necessary
index(out) <- as.numeric(index(out))