Существует ли быстрая оценка простой регрессии (линии регрессии только с пересечением и наклоном)?

Этот вопрос относится к процедуре выбора функции машинного обучения.

У меня есть большая матрица возможностей - столбцы - это объекты предметов (строк):

set.seed(1)
features.mat <- matrix(rnorm(10*100),ncol=100)
colnames(features.mat) <- paste("F",1:100,sep="")
rownames(features.mat) <- paste("S",1:10,sep="")

Ответ был измерен для каждого субъекта (S) в разных условиях (C) и поэтому выглядит так:

response.df <-
data.frame(S = c(sapply(1:10, function(x) rep(paste("S", x, sep = ""),100))),
           C = rep(paste("C", 1:100, sep = ""), 10),
           response = rnorm(1000), stringsAsFactors = F)

Таким образом, я сопоставляю предметы вresponse.df:

match.idx <- match(response.df$S, rownames(features.mat))

Я ищу быстрый способ вычисления одномерной регрессии каждой функции и ответа.

Что-нибудь быстрее этого?

fun <- function(f){
  fit <- lm(response.df$response ~ features.mat[match.idx,f])
  beta <- coef(summary(fit))
  data.frame(feature = colnames(features.mat)[f], effect = beta[2,1],
             p.val = beta[2,4], stringsAsFactors = F))
  }

res <- do.call(rbind, lapply(1:ncol(features.mat), fun))

Я заинтересован в маргинальном ускорении, то есть в других методах, кроме использования параллельных вычислений черезmclapply или жеmclapply2.

Ответы на вопрос(1)

Ваш ответ на вопрос