gpt4 book ai didi

R:如何在没有for循环的情况下计算回归

转载 作者:行者123 更新时间:2023-12-02 08:31:11 25 4
gpt4 key购买 nike

set.seed(1)
n <- 100
ret <- rnorm(n, 0, 0.02)
ret[1] <- 0
price <- cumprod(1+ret)*100
maxi <- 0
drawdown <- rep(0, n)

for (i in 1 : n){
maxi <- max(price[1 : i])
drawdown[i] <- price[i] / maxi - 1
}

你好,

是否可以加快计算速度?也许删除 for 循环?

问候

最佳答案

R 有一个向量化的 cummax 函数,除法和加法运算也是向量化的,所以你可以这样做:

price/cummax(price) - 1

n <- 10000 时的效率比较:

library(microbenchmark)
microbenchmark(
OP= {
drawdown <- rep(0, n)
for (i in 1 : n){
maxi <- max(price[1 : i])
drawdown[i] <- price[i] / maxi - 1
}
},
me={
drawdown2 <- price/cummax(price) - 1
}, times=10)

# Unit: microseconds
# expr min lq mean median uq max neval
# OP 456216.519 483387.361 536067.7521 550912.471 565453.555 663352.635 10
# me 98.075 102.067 107.5978 105.203 112.331 127.726 10

identical(drawdown, drawdown2)
# [1] TRUE

关于R:如何在没有for循环的情况下计算回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26626543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com