Wie extrahiere ich die Korrelation von festen Effekten aus der lmer-Ausgabe?

Wenn Sie ein Mehrebenenmodell mit vielen Faktoren und Wechselwirkungen haben, kann die Größe der Korrelationsmatrix für feste Effekte sehr groß und unklar werden.

Ich kann das benutzensymbolic.cor=T Parameter in der Druckmethode, um die Zusammenfassung wie folgt klarer auszudrucken:

ratbrain <-
within(read.delim("http://www-personal.umich.edu/~bwest/rat_brain.dat"),
{
treatment <- factor(treatment,
labels = c("Basal", "Carbachol"))
region <- factor(region,
labels = c("BST", "LS", "VDB"))
})

print(mod<-lmer(activate ~ region * treatment + (0 + treatment | animal),ratbrain),symbolic.cor=T)

Dies zeichnet eine etwas klarere Korrelationsmatrix für große Matrizen auf. Obwohl die Matrix dieses Beispiels nicht so groß ist. Aber es wäre schön, wenn ich eine Heatmap der Zusammenhänge aufzeichnen könnte.
Wie extrahiere ich die Korrelation fester Effekte, damit ich diese Heatmap erstellen kann?

BEARBEITEN:

Hier ist die Funktion, die ich dank der Antworten erstellt habe.

fixeff.plotcorr<-function(mod,...)
{
  #require(GGally) # contains another correlation plot using ggplot2
  require(lme4)

  fixNames<-names(fixef(mod))

  # Simon O'Hanlon's answer:
  # so <- summary(mod)
  # df<-as.matrix(so@vcov@factors$correlation) for version lme4<1.0
  # df<-as.matrix(so$vcov@factors$correlation)  # lme4 >= 1.0

  df<-as.matrix(cov2cor(vcov(mod))) #Ben Bolker's solution

  rownames(df)<-fixNames
  colnames(df)<-abbreviate(fixNames, minlength = 11)

  colsc=c(rgb(241, 54, 23, maxColorValue=255), 'white', rgb(0, 61, 104, maxColorValue=255))
  colramp = colorRampPalette(colsc, space='Lab')
  colors = colramp(100)
  cols=colors[((df + 1)/2) * 100]
  # I'm using function my.plotcorr which you can download here:
  # http://hlplab.wordpress.com/2012/03/20/correlation-plot-matrices-using-the-ellipse-library/
  my.plotcorr(df, col=cols, diag='none', upper.panel="number", mar=c(0,0.1,0,0),...)

  # Another possibility is the corrplot package:
  # cols <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D", "#F4A582", "#FDDBC7", 
  #                              "#FFFFFF", "#D1E5F0", "#92C5DE", "#4393C3", "#2166AC", "#053061"))
  # require(corrplot,quiet=T)
  # corrplot(df, type="upper", method="number", tl.pos='tl', tl.col='black', tl.cex=0.8, cl.pos='n', col=cols(50))
  # corrplot(df,add=TRUE,  method='ellipse', type='lower', tl.pos='n', tl.col='black', cl.pos='n', col=cols(50), diag=FALSE)
}

Sie müssen die Funktion my.plotcorr von herunterladenHier. Der resultierende Plot des obigen Beispiels mit Befehlfixeff.plotcorr(mod) sieht jetzt so aus:

Antworten auf die Frage(3)

Ihre Antwort auf die Frage