我试图在同一个情节上绘制两个回归.因此,在第一次回归结束的地方,第二次回归应该继续,并且由于第二次回归线具有不同的斜率,因此产生扭结.
我是ggplot的新手,我收到了错误:"错误:美学必须是长度为1或与dataProblems相同的长度:gdpless15"
这是R文件的链接以及此所需的数据集. 数据集和代码
我基本上对变量gdp做了ols回归.变量gdp被子集化为<15000和> 15000两部分.然后我想绘制<15000的回归线,当它达到> 15000时,它将在同一图上绘制第二次回归的回归线.
我认为使用ggplot2将两个回归图一起绘制最困难.

这是我认为最接近我想要的代码的版本.
library(foreign)
library(ggplot2)
gdpless15 <- isspmacro$gdp[(isspmacro$gdp < 15000) ] <- subset(isspmacro,gdpless15)
gdpless15 <-gdp < 15000
gdpmore15 <- gdp > 15000
combinedreg <- ggplot() +
geom_point(data=less15, aes(x=gdpless15, y=hap)) +
geom_smooth(data=less15, aes(x=gdpless, y=hap), fill="blue",colour="darkblue", size=1) +
geom_point(data=more15, aes(x=gdpmore15, y=hap)) +
geom_smooth(data=more15, fill="red",colour="red", size=1)
combinedreg <- ggplot() +
geom_point(data=less15, aes(x=gdpless15, y=hap)) +
geom_smooth(data=less15, aes(x=gdpless, y=hap), fill="blue",colour="darkblue", size=1) +
geom_point(data=more15, aes(x=gdpmore15, y=hap))+
geom_smooth(method=lm) + geom_point(shape=1)
plot(combinedreg)
Run Code Online (Sandbox Code Playgroud)
注意:您最好使用示例或玩具数据集来说明问题,以便它可以重现.
你要做的是被称为破碎回归.您可以使用一个回归而不是两个回归轻松完成此操作.
# example data
library(faraway)
data(savings)
# create your broken stick regression, predict results
lhs <- function(x) ifelse(x < 35,35-x,0)
rhs <- function(x) ifelse(x < 35,0,x-35)
gb <- lm(sr ~ lhs(pop15) + rhs(pop15), savings)
savings$p <- predict(gb, savings)
# plot
library(ggplot2)
ggplot(savings, aes(x= pop15, y= sr) ) + geom_point() +
geom_line(data= savings, aes(x= pop15, y=p), colour= "blue") +
# marker of break
geom_segment(aes(x=35, y= 5, xend= 35, yend= 15), colour= "red", linetype= "dashed")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |