# Generating random data (only four points to see the difference)
set.seed(1231)
n <- 3
X <- matrix(rnorm(n*4), ncol = 4)
# These two should be equal
mean_recursive(
X_t = X[1,],
Mean_t_prev = colMeans(X[-1,]),
t. = n - 1
)
colMeans(X)
# These two should be equal
cov_recursive(
X_t = X[1, ],
Cov_t = cov(X[-1,]),
Mean_t = colMeans(X),
Mean_t_prev = colMeans(X[-1, ]),
t = n-1
)
cov(X)
# Speed example -------------------------------------------------------------
set.seed(13155511)
X <- matrix(rnorm(1e3*100), ncol = 100)
ans0 <- cov(X[-1,])
t0 <- system.time({
ans1 <- cov(X)
})
t1 <- system.time(ans2 <- cov_recursive(
X[1, ], ans0,
Mean_t = colMeans(X),
Mean_t_prev = colMeans(X[-1,]),
t. = 1e3 - 1
))
# Comparing accuracy and speed
range(ans1 - ans2)
t0/t1
Run the code above in your browser using DataLab