Gibt es eine schnelle Schätzung der einfachen Regression (eine Regressionsgerade mit nur Achsenabschnitt und Steigung)?

Diese Frage bezieht sich auf ein Auswahlverfahren für maschinelles Lernen.

Ich habe eine große Merkmalsmatrix - Spalten sind die Merkmale der Themen (Zeilen):

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="")

Die Reaktion wurde für jedes Subjekt gemessen S) unter verschiedenen Bedingungen C) und sieht daher so aus:

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)

So passe ich die Themen inresponse.df:

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

Ich suche nach einer schnellen Methode, um die univariate Regression jedes Features und der Antwort zu berechnen.

Alles schneller als das?:

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))

Ich bin an einer geringfügigen Steigerung interessiert, d. H. Anderen Methoden als der Verwendung von Parallel-Computing über mclapply odermclapply2.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage