R 绘制nls符合单个图形中重叠的预测间隔

R 绘制nls符合单个图形中重叠的预测间隔,r,graphics,plot,nls,R,Graphics,Plot,Nls,假设我有一些数据,d,我将nls模型拟合到数据的两个子集 x<- seq(0,4,0.1) y1<- (x*2 / (0.2 + x)) y1<- y1+rnorm(length(y1),0,0.2) y2<- (x*3 / (0.2 + x)) y2<- y2+rnorm(length(y2),0,0.4) d<-data.frame(x,y1,y2) m.y1<-nls(y1~v*x/(k+x),start=list(v=1.9,k=0.19),d

假设我有一些数据,
d
,我将nls模型拟合到数据的两个子集

x<- seq(0,4,0.1)
y1<- (x*2 / (0.2 + x))
y1<- y1+rnorm(length(y1),0,0.2)
y2<- (x*3 / (0.2 + x))
y2<- y2+rnorm(length(y2),0,0.4)
d<-data.frame(x,y1,y2)

m.y1<-nls(y1~v*x/(k+x),start=list(v=1.9,k=0.19),data=d)
m.y2<-nls(y2~v*x/(k+x),start=list(v=2.9,k=0.19),data=d)

然而,如果我把它们画在一起,我就有问题了。第二个图的着色覆盖第一个图的点和着色:

1:如何确保第一个图上的点位于第二个图的阴影顶部


2:如何使着色预测间隔重叠的区域成为新颜色(如紫色,或重叠的两种颜色的任何融合)?

使用
调整颜色
添加如下透明度:

plotFit(m.y1, interval = "prediction", ylim = c(0,3.5), pch = 19, 
        col.pred = adjustcolor("lightblue", 0.5), shade = TRUE)

par(new = TRUE)
plotFit(m.y2, interval = "prediction", ylim = c(0,3.5), pch = 19, 
       col.pred =  adjustcolor("light pink", 0.5), shade = TRUE)
根据需要,您可以使用两个透明度值(此处均设置为0.5)并可能仅使其中一个透明


您确定这些是您想要的预测间隔吗?通过快速查看文档,我不清楚这些是用于反向预测还是用于正常预测。无论如何,对于第一个问题:
点(y1~x,data=d)
,对于第二个问题,您需要半透明颜色,我相信大多数设备不支持半透明颜色。您可以使用ggplot2重新实现
plotFit
功能,只需指定
alpha=0.3
@roland是,我确信这些是我想要的预测间隔。你能举个例子说明我将如何在ggplot2中实现plotfit吗?我可以,但这将是一项巨大的时间投资。@roland oh Danggg。听起来你好像没有这些技能!很好的尝试。在我听来,你好像没有这个技能。你以11秒的优势击败了我,我将删除我的答案:)很好的功能
adjustcolor
btw。。。
 plotFit(m.y2,interval="prediction",ylim=c(0,3.5),pch=19,col.pred='pink',shade=T)
plotFit(m.y1, interval = "prediction", ylim = c(0,3.5), pch = 19, 
        col.pred = adjustcolor("lightblue", 0.5), shade = TRUE)

par(new = TRUE)
plotFit(m.y2, interval = "prediction", ylim = c(0,3.5), pch = 19, 
       col.pred =  adjustcolor("light pink", 0.5), shade = TRUE)