gpt4 book ai didi

r - 如何根据 MuMIn model.avg() 摘要进行绘图

转载 作者:行者123 更新时间:2023-12-02 04:02:24 40 4
gpt4 key购买 nike

有没有一种方法可以直接从 MuMIn model.avg() 为具有置信带的不同变量绘制模型平均摘要输出。以前我一直使用 ggplot 和 ggpredict 来绘制实际模型中的项,但我一直无法找到一种方法来绘制平均模型的结果。

显然,我可以手动绘制斜率和截距,但是获得准确的置信带并从 confint() 进行绘制并不理想,而且我还没有从看起来正确的间隔中获得置信带。

library(MuMIn)
#Dummy Data
a <- seq(1:5)
set.seed(1)
b <- sample(1:100,5)
c <- sample(1:100,5)
d <-sample(1:100,5)
df <- data.frame(a,b,c,d)

Dredged <- dredge(lm(a ~ b + c + d, data=df), rank=AIC)
ModelAvg <- model.avg(Dredged, subset=delta<=2)


CI <- confint(ModelAvg, full=T) # get confidence intervals
summary(ModelAvg)


#I want to be able to create a graph for each term from the averaged output with its estimate, SE, and Confidence bands


#Output - I've only left the relevant part of the output, my actual data ends up with 5 component models
#Call:
#model.avg(object = Dredged, subset = delta <= 2)
#Component models:
# df logLik AIC delta weight
#12 4 -1.32 10.63 0.00 0.69
#123 5 -1.10 12.21 1.58 0.31

#Model-averaged coefficients:
#(full average)
# Estimate Std. Error Adjusted SE z value Pr(>|z|)
#(Intercept) 4.933497 1.308953 7.725454 0.639 0.523
#b 0.021946 0.010320 0.048539 0.452 0.651
#c -0.044848 0.012076 0.067954 0.660 0.509
#d -0.002275 0.014081 0.088694 0.026 0.980


最佳答案

我不太确定我理解您为什么质疑“confint()”输出,并且其输出的有效性实际上是与绘图问题不同的问题。

绘制系数 +/- SE,adj。 SE 和 95% CI,请尝试以下操作。这使用完整模型平均值,因为您在 CI 中使用了 full=T 参数。

该图不是最漂亮的,但它可以完成工作 - 如果您想要一个更好的图,请告诉我。我没有绘制截距图,因为在这种情况下,估计值远大于系数,但所有数据都采用易于绘制的格式。

library(MuMIn)
#Dummy Data
a <- seq(1:5)
set.seed(1)
b <- sample(1:100,5)
c <- sample(1:100,5)
d <-sample(1:100,5)
df <- data.frame(a,b,c,d)

options(na.action = "na.fail") # needed for dredge to work
Dredged <- dredge(lm(a ~ b + c + d, data=df), rank=AIC)
ModelAvg <- model.avg(Dredged)
mA<-summary(ModelAvg) #pulling out model averages
df1<-as.data.frame(mA$coefmat.full) #selecting full model coefficient averages

CI <- as.data.frame(confint(ModelAvg, full=T)) # get confidence intervals for full model
df1$CI.min <-CI$`2.5 %` #pulling out CIs and putting into same df as coefficient estimates
df1$CI.max <-CI$`97.5 %`# order of coeffients same in both, so no mixups; but should check anyway
setDT(df1, keep.rownames = "coefficient") #put rownames into column
names(df1) <- gsub(" ", "", names(df1)) # remove spaces from column headers

包含所有三个误差线的图(SE、调整 SE、95% CI)

ggplot(data=df1[2:4,], aes(x=coefficient, y=Estimate))+ #excluding intercept because estimates so much larger
geom_point(size=10)+ #points for coefficient estimates
theme_classic(base_size = 20)+ #clean graph
geom_errorbar(aes(ymin=Estimate-Std.Error, ymax=Estimate+Std.Error), colour ="red", # SE
width=.2, lwd=3) +
geom_errorbar(aes(ymin=Estimate-AdjustedSE, ymax=Estimate+AdjustedSE), colour="blue", #adj SE
width=.2, lwd=2) +
geom_errorbar(aes(ymin=CI.min, ymax=CI.max), colour="pink", # CIs
width=.2,lwd=1)

这会产生以下图表。红色是SE,蓝色是adj。 SE 和粉色的置信区间为 95%。 enter image description here

使用更好的图表进行编辑:

ggplot(data=df1[2:4,], aes(x=coefficient, y=Estimate))+ #again, excluding intercept because estimates so much larger
geom_hline(yintercept=0, color = "red",linetype="dashed", lwd=1.5)+ #add dashed line at zero
geom_errorbar(aes(ymin=Estimate-AdjustedSE, ymax=Estimate+AdjustedSE), colour="blue", #adj SE
width=0, lwd=1.5) +
coord_flip()+ # flipping x and y axes
geom_point(size=8)+theme_classic(base_size = 20)+ ylab("Coefficient")

enter image description here

关于r - 如何根据 MuMIn model.avg() 摘要进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54962119/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com