Здесь X
- это (большая) матрица с 100 столбцами. Поскольку biglm.big.matrix()
требует аргумента data=
, похоже, что вы не можете попросить эту функцию запустить линейную модель для всех столбцов в X
одновременно, как вы можете с помощью lm()
. Также обратите внимание, что когда вы cbind()
a с big.matrix
, как в cbind(y, X)
, результатом будет list
!!.
Похоже, вам нужно, чтобы y
и X
были частью одного big.matrix
, тогда вам нужно будет самостоятельно построить формулу модели:
library(bigmemory)
library(biganalytics)
library(bigalgebra)
# Construct an empty big.matrix with the correct number of dimensions and
# with column names
nrows <- 1000000
dat <- big.matrix(nrow=nrows, ncol=101,
dimnames=list(
NULL, # no rownames
c("y", paste0("X", 1:ncol(X))) # colnames: y, X1, X2, ..., X100
))
# fill with y and X:
dat[,1] <- rnorm(nrows)
dat[,2:101] <- replicate(100, rnorm(nrows))
# construct the model formula as a character vector using paste:
# (Or you need to type y ~ X1 + X2 + ... + X100 manually in biglm.big.matrix()!)
f <- paste("y ~", paste(colnames(dat)[-1], collapse=" + "))
# run the model
res <- biglm.big.matrix(as.formula(f), data=dat)
summary(res)