Khi bạn có mô hình đa cấp với nhiều yếu tố và tương tác kích thước tương quan của ma trận hiệu ứng cố định có thể trở nên khá lớn và không rõ ràng.Làm thế nào để trích xuất tương quan của phần hiệu ứng cố định của đầu ra lmer
tôi có thể sử dụng tham số symbolic.cor=T
trong phương pháp in để làm cho một bản in rõ ràng hơn về tóm tắt như dưới đây:
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)
này âm mưu một ma trận tương quan phần nào rõ ràng hơn cho các ma trận lớn. Mặc dù ma trận của ví dụ này không quá lớn. Nhưng nó sẽ là tốt đẹp nếu tôi có thể vẽ một bản đồ nhiệt của các mối tương quan.
Làm cách nào để trích xuất tương quan của các hiệu ứng cố định để tôi có thể tạo bản đồ nhiệt này?
EDIT:
Dưới đây là các chức năng tôi đã tạo nhờ vào các câu trả lời.
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([email protected]@factors$correlation) for version lme4<1.0
# df<-as.matrix([email protected]$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)
}
Bạn phải tải xuống hàm my.plotcorr từ here. Cốt truyện kết quả của ví dụ trên sử dụng lệnh fixeff.plotcorr(mod)
bây giờ trông như thế này:
+1 cho những gì tôi sẽ xem xét không phải là giải pháp thay thế, nhưng dẫn xuất toán học về mối tương quan từ ma trận v-cov !! :-) –