我想使用 ggeffects 包繪制非線性模型的置信區間。就我而言:
#Packages
library(ggplot2)
library(minpack.lm)
library(ggeffects)
library(dplyr)
# My dataset
coleo<- read.csv("https://raw.githubusercontent.com/Leprechault/PEN-533/master/coleo-infest-tree.csv")
coleo$DL<-as.numeric(coleo$DL)
coleo$V<-as.numeric(coleo$V)
# My model
m.c.coleo<-nlsLM(V ~ b1 b2 * I(DL^b3), start = list(b1 = 0.2164, b2 = 1.6264, b3 = 1), data = coleo)
summary(m.c.coleo)
# My plot
ggpredict(m.c.coleo, terms = "DL [all]") %>% plot(add.data = TRUE)

輸出圖沒有置信區間,通常包會生成。
請問,有什么幫助嗎?
uj5u.com熱心網友回復:
我認為這是由于ggpredict使用了泛型predict函式,并且predict.nls不會產生標準錯誤。從檔案中ggpredict:
ggpredict()用于predict()生成預測
和狀態的檔案stats:::predict.nls:
se.fit 一個邏輯值,指示是否應計算預測的標準誤差。默認為假。目前這個論點被忽略了。
無論如何,為您的模型制作的情節ggpredict似乎有點奇怪。如果查看資料,DL沿 x 軸只有 5 個離散值:
plot(coleo$DL, coleo$V)

要制作一個包含原始點、nls 回歸線和回歸線的置信區間的圖,您可以在 ggplot 中自己創建一個。每個離散值的平均值的標準誤差DL可以近似為標準差除以該 x 值處的點數的平方根。然后可以通過插值構造表示 95% 置信區間的平滑帶:
plot_df <- data.frame(
DL = seq(0, 1, 0.01),
V = predict(m.c.coleo, newdata = list(DL = seq(0, 1, 0.01))),
se = 1.96 * summary(m.c.coleo)$sigma / sqrt(approx(sort(unique(coleo$DL)),
table(coleo$DL), xout = seq(0, 1, 0.01))$y)
)
ggplot(coleo, aes(DL, V))
geom_point(size = 2, alpha = 0.5)
theme_light()
geom_ribbon(data = plot_df, aes(ymin = V - se, ymax = V se),
alpha = 0.1)
geom_line(data = plot_df)

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/488005.html
下一篇:刻面,所有外部的繪圖軸
