我试图在同一个情节上绘制两个回归.因此,在第一次回归结束的地方,第二次回归应该继续,并且由于第二次回归线具有不同的斜率,因此产生扭结.
我是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)
Alex W.. 5
注意:您最好使用示例或玩具数据集来说明问题,以便它可以重现.
你要做的是被称为破碎回归.您可以使用一个回归而不是两个回归轻松完成此操作.
# 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")
注意:您最好使用示例或玩具数据集来说明问题,以便它可以重现.
你要做的是被称为破碎回归.您可以使用一个回归而不是两个回归轻松完成此操作.
# 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")