Skip to contents

Fit regression model Y[j,] ~ design for each feature j

Usage

lmmFitResponses(
  Y,
  design,
  Z,
  Weights = NULL,
  dcmpMethod = c("general", "categorical"),
  REML = TRUE,
  delta.range = c(-10, 10),
  tol = 1e-06,
  detail = 1,
  lambda = 0,
  nthreads = 1,
  verbose = TRUE,
  ...
)

# S4 method for class 'matrix'
lmmFitResponses(
  Y,
  design,
  Z,
  Weights = NULL,
  dcmpMethod = c("general", "categorical"),
  REML = TRUE,
  delta.range = c(-10, 10),
  tol = 1e-06,
  detail = 1,
  lambda = 0,
  nthreads = 1,
  verbose = TRUE,
  ...
)

Arguments

Y

matrix of responses as __rows__

design

design matrix

Z

random effect design matrix

Weights

matrix sample-level weights the same dimension as Y

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

Details

Since the weights vary for each response, each model is computed separately without recycling precomputed values

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 effect
Y = matrix(sleepstudy$Reaction, nrow=1)
rownames(Y) = "Reaction"
colnames(Y) = rownames(sleepstudy)

design = model.matrix(~ Days, sleepstudy)
Z = preprocess_indicator(sleepstudy$Subject)

fit1 = lmmFitResponses(Y, design, Z)

fit1
#> 		 lmmFitResponses 
#> 
#> coefs(2): (Intercept), Days
#> responses(1): Reaction
#> family: gaussian/identity 
#> Estimated: se, dispersion, rdf, sigSq_e, sigSq_g 
#> 

coef(fit1)
#>          (Intercept)     Days
#> Reaction    251.4051 10.46729