Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用循环在一个图形中绘制多个图形_R_Plot_Resampling - Fatal编程技术网

R 使用循环在一个图形中绘制多个图形

R 使用循环在一个图形中绘制多个图形,r,plot,resampling,R,Plot,Resampling,我需要用不同的风险度量来计算有效边界,并使用自举技术来模拟可能的结果。然而,现在我陷入了困境:我想做的是通过一个循环(稍后将集成到一个函数中)生成多个有效边界,每个有效边界与未来可能的结果关联,并以这种方式将它们绘制在同一个图形上,以查看它们在模拟过程中可能发生的变化。以下是我到目前为止编写的循环: for (i in 1:B) { idx <- sample(1:N, N, replace = TRUE) new.x <- x[idx, ] µ.b <- a

我需要用不同的风险度量来计算有效边界,并使用自举技术来模拟可能的结果。然而,现在我陷入了困境:我想做的是通过一个循环(稍后将集成到一个函数中)生成多个有效边界,每个有效边界与未来可能的结果关联,并以这种方式将它们绘制在同一个图形上,以查看它们在模拟过程中可能发生的变化。以下是我到目前为止编写的循环:

for (i in 1:B) { 
  idx <- sample(1:N, N, replace = TRUE) 
  new.x <- x[idx, ] 
  µ.b <- apply(X = new.x, 2, FUN = mean) 
  range.b[, i] <- seq(from = min(µ.b), to = max(µ.b), length.out = steps) 
  sigma.b <- apply(X = new.x, 2, FUN = sd) 
  riskCov.b[, i] <- sapply(range.b[, i], function(targetReturn) { 
    w <- MV_QP(new.x, targetReturn, Sigma) 
    sd(c(new.x %*% w)) 
    }) 
  xlim.b <- range(c(sigma.b, riskCov.b[, 1]), na.rm = TRUE) 
  ylim.b <- range(µ.b) 
  par(new = TRUE) 
  plot(x = riskCov.b[, i], y = range.b[, i], type = "l", xlim = xlim.b, ylim = ylim.b, xlab = "Risk", ylab = "Return", main = "Resampling EFs") 
} 
(1:B中的i){code>
idx我不知道优化是否正确。对于绘图,您可以尝试以下方法:

for (i in 1:B) { 
  idx <- sample(1:N, N, replace = TRUE) 
  new.x <- x[idx, ] 
  µ.b <- apply(X = new.x, 2, FUN = mean) 
  range.b[, i] <- seq(from = min(µ.b), to = max(µ.b), length.out = steps) 
  #sigma.b <- apply(X = new.x, 2, FUN = sd) 
  riskCov.b[, i] <- sapply(range.b[, i], function(targetReturn) { 
    w <- MV_QP(new.x, targetReturn,Sigma=cov(new.x))
    sd(c(new.x %*% w)) 
  }) 
}

xlim.b <- range(c(apply(X = x, 2, FUN= sd), riskCov.b), na.rm = TRUE) *c(0.98,1.02)
  ylim.b <- range(µ.b) *c(0.98,1.02)
  #par(new = TRUE) 
for (i in 1:B){
  if (i==1) plot(x = riskCov.b[, i], y = range.b[, i], type = "l", xlim = xlim.b, ylim = ylim.b, xlab = "Risk", ylab = "Return", main = "Resampling EFs") else
  lines(x = riskCov.b[, i], y = range.b[, i],col=rainbow(B)[i])
}
(1:B中的i){code>
idx您的代码不是完全可复制的,请查看