Skip to contents

Fit regression model y ~ design + X_features[,j] for each feature j

Usage

lmmFitFeatures(
  y,
  design,
  data,
  U,
  s,
  weights = NULL,
  dcmpMethod = c("general", "categorical"),
  REML = TRUE,
  delta = NULL,
  delta.range = c(-10, 10),
  tol = 1e-06,
  detail = 1,
  lambda = 0,
  nthreads = 1,
  verbose = TRUE,
  ...
)

# S4 method for class 'ANY,ANY,matrix'
lmmFitFeatures(
  y,
  design,
  data,
  U,
  s,
  weights = NULL,
  dcmpMethod = c("general", "categorical"),
  REML = TRUE,
  delta = NULL,
  delta.range = c(-10, 10),
  tol = 1e-06,
  detail = 1,
  lambda = 0,
  nthreads = 1,
  verbose = TRUE,
  ...
)

Arguments

y

response vector

design

design matrix shared across all models

data

feature matrix with model j using feature j

U

eigen-vectors of random effect

s

eigen-values of random effect

weights

sample-level weights

dcmpMethod

use a "general" method (default) for SVD of Z. If Z is a categorical design matrix, used faster method "categorical"

REML

logical scalar - Should the estimates be chosen to optimize the REML criterion vs ML?

delta

if NULL estimate delta, if value is given use this fixed value

delta.range

min and max values (in log space), of the search space for delta to fit the random effect

tol

convergence criterion for the 1D search of the delta space

detail

level of model detail returned, with LEAST = 0, LOW = 1, MEDIUM = 2, HIGH = 3, MOST = 4, MAX = 5. LEAST (beta), LOW (beta, se, sigSq, rdf), MEDIUM (vcov), HIGH (residuals), MOST (hatvalues), MAX (deviance residuals)

lambda

ridge shrinkage parameter

nthreads

number of threads. Each model is fit in serial, analysis is parallelized across features

verbose

show progress

...

other args

Value

List of parameter estimates with entries coef, se, sigSq, rdf and other depending on detail

Examples

library(fastglmm)
library(lme4)

set.seed(1)
sleepstudy$V = rnorm(nrow(sleepstudy))

# lmer
fit <- lmer( Reaction ~ Days + V + (1 | Subject), sleepstudy)
fit
#> Linear mixed model fit by REML ['lmerMod']
#> Formula: Reaction ~ Days + V + (1 | Subject)
#>    Data: sleepstudy
#> REML criterion at convergence: 1782.453
#> Random effects:
#>  Groups   Name        Std.Dev.
#>  Subject  (Intercept) 37.12   
#>  Residual             31.06   
#> Number of obs: 180, groups:  Subject, 18
#> Fixed Effects:
#> (Intercept)         Days            V  
#>     251.457       10.472       -1.295  

# prepare response, design and random efect
y = sleepstudy$Reaction
design = model.matrix(~ Days, sleepstudy)
dcmp = indicator_decomp(sleepstudy$Subject)

data = as.matrix(sleepstudy$V)
rownames(data) = rownames(sleepstudy)
colnames(data) = paste0("SNP_", seq(ncol(data)))

fit1 = lmmFitFeatures(y, design, data, dcmp$vectors, dcmp$values)
coef(fit1)
#>       (Intercept)     Days         x
#> SNP_1    251.4575 10.47224 -1.295965