R中嵌套循环的优化
我试图加速下面的代码,但没有任何成功 我读过关于这个包的文章,但我也没能实现那个包 有没有办法优化R中的以下代码R中嵌套循环的优化,r,regression,R,Regression,我试图加速下面的代码,但没有任何成功 我读过关于这个包的文章,但我也没能实现那个包 有没有办法优化R中的以下代码 RI<-function(y,x,a,mu,R=500,t=500){ x <- as.matrix(x) dm <- dim(x) n <- dm[1] bias1 <- bias2 <- bias3 <- numeric(t) b1 <- b2<- b3 <- numeric(R) ###
RI<-function(y,x,a,mu,R=500,t=500){
x <- as.matrix(x)
dm <- dim(x)
n <- dm[1]
bias1 <- bias2 <- bias3 <- numeric(t)
b1 <- b2<- b3 <- numeric(R)
### Outliers in Y ######
for (j in 1:t) {
for (i in 1:R) {
id <- sample(n, a * n)
z <- y
z[id] <- rnorm(id, mu)
b1[i] <- var(coef(lm(z ~., data = as.data.frame(x))))
b2[i] <- var(coef(rlm(z ~ ., data = data.frame(x), maxit = 2000, method = "MM")))
b3[i] <- var(coef(rlm(z ~ ., data = data.frame(x), psi = psi.huber,maxit = 300)))
}
bias1[j] <- sum(b1) ; bias2[j] <- sum(b2); bias3[j] <- sum(b3)
}
bias <- cbind("lm" = bias1,"MM-rlm" = bias2, "H-rlm" = bias3)
colMeans(bias)
}
#######################################
p <- 5
n <- 200
x<- matrix(rnorm(n * p), ncol = p)
y<-rnorm(n)
a=0.2
mu <-10
#######################################
RI(y,x,a,mu)
RI1)从x2)什么是var(coef())
,从统计学上讲?如果速度很重要,不要使用lm
和rlm
的公式方法。只创建一次模型矩阵,并将其和因变量传递给默认方法。但是,如果您分析代码,您应该看到大部分时间都花在迭代的重新加权最小二乘步骤上。这是你的瓶颈,你不能用合理的努力来优化它。将循环并行化会更容易。我们循环了25万次,速度会很慢。也许考虑一下?为了扩展Rui的问题,这个函数在统计上做了什么?是的,我可以理解,但我看不到它的含义。不管怎样,即使它有一个,你也要加上这些方差,然后返回总和的平均值。这是您真正想要的,而不是在内部循环中计算的值的平均值吗?