R 无循环计算样本方差

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

以下是我想做的:

我有一个时间序列数据框,比如说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
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
  }