Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 图中有两个模型_R_Ggplot2 - Fatal编程技术网

R 图中有两个模型

R 图中有两个模型,r,ggplot2,R,Ggplot2,假设我有以下数据集: x <- 1:100 y <- 2 + 70* x z <- 2 + x^2 index <- c(rep(1,100),rep(2,100)) x <- c(x,x) t<- c(y,z) data <- data.frame(x,t,index) data[,2]= data[,2] + rnorm(200,500,400) ggplot(data, aes(x = x, y = t, colour = factor(

假设我有以下数据集:

x <- 1:100
y <- 2 +  70* x
z <- 2 + x^2
index <- c(rep(1,100),rep(2,100))

x <- c(x,x)
t<-  c(y,z)
data <- data.frame(x,t,index)

data[,2]= data[,2] + rnorm(200,500,400)

ggplot(data, aes(x = x, y = t, colour = factor(index))) + geom_point() + stat_smooth(method = "lm", formula = y ~ x, se = FALSE)

x仍然不能完全确定你的意思,但我想这将是朝着你想要的方向迈出的一步:

ggplot(data, aes(x = x, y = t, colour = factor(index))) + 
  stat_smooth(method = "lm", formula = y ~ x, se = FALSE) +
  stat_smooth(method = "lm", formula = y ~ poly(x,2), se = FALSE)
在数据中,一组(索引=1)通过线性函数连接,另一组通过二次函数连接。如果指定公式y~x,两组都会拟合一条直线回归线,这不是您想要的,对吗

上面的代码生成两个层,第一个层是初始层,有两条直线,第二个层包含一条直线和一条二次曲线。由于两个图中的线性组相同,因此只能看到三条线。如果要删除带有两条直线的部分,请删除第二条代码行,以便只保留公式
y~多边形(x,2)
poly(x,2)
相当于
x+I(x^2)
,它反映了y=x+x²的数学公式


我已经从代码中删除了
geom_点()
,这样就不会模糊结果。请随意把它放回去。希望这是你需要的

仍然不能完全确定你的意思,但我想这将是朝着你想要的方向迈出的一步:

ggplot(data, aes(x = x, y = t, colour = factor(index))) + 
  stat_smooth(method = "lm", formula = y ~ x, se = FALSE) +
  stat_smooth(method = "lm", formula = y ~ poly(x,2), se = FALSE)
在数据中,一组(索引=1)通过线性函数连接,另一组通过二次函数连接。如果指定公式y~x,两组都会拟合一条直线回归线,这不是您想要的,对吗

上面的代码生成两个层,第一个层是初始层,有两条直线,第二个层包含一条直线和一条二次曲线。由于两个图中的线性组相同,因此只能看到三条线。如果要删除带有两条直线的部分,请删除第二条代码行,以便只保留公式
y~多边形(x,2)
poly(x,2)
相当于
x+I(x^2)
,它反映了y=x+x²的数学公式


我已经从代码中删除了
geom_点()
,这样就不会模糊结果。请随意把它放回去。希望这是你需要的

以下代码解决了我的问题:

ggplot() + layer (data = data[1:100,], mapping=aes(x = x, y = t,colour = factor(index)),stat = "identity") + 
 stat_smooth(data=data[1:100,], mapping = aes(x = x, y = t), method = "lm", formula = y ~ x, se = FALSE) + 
 layer(data=data[100:200,], mapping=aes(x = x, y = t,colour = factor(index)), stat = "identity") + 
 stat_smooth(data = data[100:200,], mapping = aes(x = x, y = t), method = "lm", formula = y ~ poly(x,2), se = FALSE)

以下代码解决了我的问题:

ggplot() + layer (data = data[1:100,], mapping=aes(x = x, y = t,colour = factor(index)),stat = "identity") + 
 stat_smooth(data=data[1:100,], mapping = aes(x = x, y = t), method = "lm", formula = y ~ x, se = FALSE) + 
 layer(data=data[100:200,], mapping=aes(x = x, y = t,colour = factor(index)), stat = "identity") + 
 stat_smooth(data = data[100:200,], mapping = aes(x = x, y = t), method = "lm", formula = y ~ poly(x,2), se = FALSE)

我不知道你所说的“为z添加二次模型”是什么意思。z可以用x的二次函数来解释?如果是这样,只需将公式修改为“z~多边形(x,2)”。当然,在数据中包括z。我想要一个线性模型来表示
y
,二次模型来表示
z
。一个公式是
y~x
,另一个公式是
y~x+x^2
。我不知道你说的“为z添加二次模型”是什么意思。z可以用x的二次函数来解释?如果是这样,只需将公式修改为“z~多边形(x,2)”。当然,在数据中包括z。我想要一个线性模型来表示
y
,二次模型来表示
z
。一个公式将是
y~x
,另一个公式将是
y~x+x^2
。谢谢,这解决了我的问题,但如何删除第二组(二次模型)的线性回归线。我只想要一条直线和一条曲线。@user1436187对不起,我似乎不明白你的需要。你说你需要二次模型。如果删除第二行(公式=y~x',那么你将得到一条直线和一条曲线。你无法得到第一组的曲线,因为它是一条完美的直线。该组的二次方程将有0作为二次项的系数,因此该组的二次函数将是一个特例:0*x²+b1*x+aThanks,就是这样解决我的问题,但如何删除第二组(二次模型)的线性回归线。我只需要一条线和一条曲线。@user1436187抱歉,我似乎不理解您的需要。您说过您需要二次模型。如果您删除第二条线(使用“公式=y~x”,你将得到一条直线和一条曲线。你无法得到第一组的曲线,因为它是一条完美的直线。该组的二次方程将有0作为二次项的系数,因此该组的二次函数将是一个特例:0*x²+b1*x+a你现在可以接受您可以单击此答案左侧的复选标记来回答问题。如果可能,您也应该在其他问题中执行相同的操作。您现在可以通过单击此答案左侧的复选标记来接受您的答案。如果可能,您也应该在其他问题中执行相同的操作。