File: Effect.mlm.R

package info (click to toggle)
effects 4.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,852 kB
  • sloc: makefile: 4
file content (60 lines) | stat: -rw-r--r-- 1,497 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#  Calculate Effects for term(s) in a Multivariate Linear Model 
#  2014-03-12: Introduced allEffects.mlm(). J. Fox


Effect.mlm <- function(focal.predictors, mod, response, ...) {
  if (missing(response)) {
    mod.frame <- model.frame(mod)
    response <- colnames(model.response(mod.frame))
  }
  else if (is.numeric(response)) {
    mod.frame <- model.frame(mod)
    response.names <- colnames(model.response(mod.frame))
    response <- response.names[response]
  }
  
  if (length(response)==1) {
    mod.1 <- update(mod, as.formula(paste(response, " ~ .")))
    result <- Effect(focal.predictors, mod.1,  ...)
  }
  else { 
    result <- as.list(NULL)
    for (resp in response) {
      mod.1 <- update(mod, as.formula(paste(resp, " ~ .")))
      lab <- resp
      result[[lab]] <- Effect(focal.predictors, mod.1,  ...)
    }
    class(result) <- "efflist"
  }
  result
}

allEffects.mlm <- function(mod, ...){
  result <- NextMethod()
  class(result) <- "mlm.efflist"
  result
}

plot.mlm.efflist <- function(x, ...){
  x <- do.call(c, x)
  class(x) <- "efflist"
  plot(x, ...)
}

summary.mlm.efflist <- function(object, ...){
  object <- do.call(c, object)
  for (effect in names(object)){
    cat("\n\nResponse:", object[[effect]]$response, "\n")
    print(summary(object[[effect]], ...))
  }
}

print.mlm.efflist <- function(x, ...){
  x <- do.call(c, x)
  for (effect in names(x)){
    cat("\n\nResponse:", x[[effect]]$response, "\n")
    print(x[[effect]], ...)
  }
  invisible(x) 
}