rsFit
function (x, levels = 50, minnpts = 3, cut.off = 10^c(0.7, 2.5),
doplot = FALSE, trace = FALSE, title = NULL, description = NULL)
{
call = match.call()
data = list(x = x)
x = as.vector(x)
n = length(x)
increment = (log10(n/minnpts))/levels
M = floor(10^((1:levels) * increment))
M = M[M > 1]
Y = cumsum(x)
Y2 = cumsum(x * x)
RS = NULL
for (m in M) {
S = sqrt(Y2[m]/m - (Y[m]/m)^2)
Z = Y[1:m] - (1:m) * Y[m]/m
STATS = (max(Z) - min(Z))/S
RS = c(RS, STATS)
if (trace)
cat("\n\tm = \t", m, "\tR/S = \t", STATS)
}
if (trace)
cat("\n")
这是重标极差法(R/S分析法)的算法程序,下图为所依据的算法步骤的一部分:
首先,我对照算法来看程序,不知求所有子区间a的极差的均值这一步在程序哪里体现;
其次,RS = c(RS, STATS)和if (trace)以及cat函数这两步是什么意思;
还有,我用数据运行过,发现S,Z显示都是null,且报错如下,
Error in if (trace) cat("\n\tm = \t", m, "\tR/S = \t", STATS) :
argument is not interpretable as logical;Error in if (trace) cat("\n") : argument is not interpretable as logical
本人刚接触编程,还想根据经典R/S法来自己编写修正的R/S法和V/S法用于论文,但一上来就被卡住了,希望各位高手帮忙解答下,如能直接提供以上两个程序,必有重谢,非常感谢!