R 无循环计算样本方差
以下是我想做的: 我有一个时间序列数据框,比如说100个时间序列 长度600-数据帧的一列中的每一列 我想随机选取10个时间序列,然后分配它们 总和为1的随机权重。使用这些,我想计算 10个加权时间序列变量之和的方差(例如。 凸组合) df的格式为R 无循环计算样本方差,r,loops,R,Loops,以下是我想做的: 我有一个时间序列数据框,比如说100个时间序列 长度600-数据帧的一列中的每一列 我想随机选取10个时间序列,然后分配它们 总和为1的随机权重。使用这些,我想计算 10个加权时间序列变量之和的方差(例如。 凸组合) df的格式为 v1,v2,v2.....v100 1,5,6,.......9 2,4,6,.......10 3,5,8,.......6 2,2,8,.......2 etc 我可以在循环中计算它,但r是面向向量的,效率不高。 ntrials = 10000
v1,v2,v2.....v100
1,5,6,.......9
2,4,6,.......10
3,5,8,.......6
2,2,8,.......2
etc
我可以在循环中计算它,但r是面向向量的,效率不高。ntrials = 10000
ts.sd = NULL
for (x in 1:ntrials))
{
temp = t(weights[,x]) %*% cov(df[, samples[, x]]) %*% weights[, x]
ts.sd = cbind(ts.sd, temp)
}
不确定你想要什么类型的“随机”体重。。。所以我将使用正态分布的标度s.t.它的总和为:
x=as.data.frame(matrix(sample(1:20, 100*600, replace=TRUE), ncol=100))
myfun <- function(inc, DF=x) {
w = runif(10)
w = w / sum(w)
t(w) %*% cov(DF[, sample(seq_along(DF), 10)]) %*% w
}
lapply(1:ntrials, myfun)
使用i
将循环中的值分配给它:
for (x in 1:ntrials))
{
temp = t(weights[,x]) %*% cov(df[, samples[, x]]) %*% weights[, x]
ts.sd[i] = temp
}
我明确要求你提出新问题。然而,据我所知,这个问题的答案已经给出了——只是用文字,而不是代码。
for (x in 1:ntrials))
{
temp = t(weights[,x]) %*% cov(df[, samples[, x]]) %*% weights[, x]
ts.sd[i] = temp
}