【问题标题】:Plotting Linear Regression Line with Confidence Interval绘制带置信区间的线性回归线
【发布时间】:2019-08-29 02:09:52
【问题描述】:

我正在尝试绘制房屋的“平方英尺”如何影响相同的“销售价格(1000 美元)”。特别是,我希望绘制平方英尺与销售价格的系数线,并在线周围有一个假设的灰色区域,并叠加原始数据点。

我尝试了几种不同的方式来完成这个。我尝试过的一种方法是使用 library(jtools) 中的函数 effect_plot。我使用了从https://cran.r-project.org/web/packages/jtools/vignettes/effect_plot.html 找到的编码。

但是当我运行这个函数时,我没有得到一个绘图,我只是得到一个错误:FUN(X[[i]], ...) 中的错误:找不到对象'Sales Price (in $1000)'。

我尝试的第二种方法是手动创建一个新向量并尝试绘制置信区间。我的代码灵感来自Plotting a 95% confidence interval for a lm object

但是有了这个,我在 conf_interval 行中收到一个错误: eval 中的错误(predvars,data,env):找不到对象“平方英尺”。我不知道如何纠正这个错误。

最后,在https://rpubs.com/aaronsc32/regression-confidence-prediction-intervals的启发下,我尝试使用 library(ggplot2) 来完成问题。

但是每次我运行 R 时,它都会创建一个坐标平面,其中一个点位于平面的中心;没有线,没有实点,没有假设的置信区间。没有错误,我也无法弄清楚编码的问题。

library("jtools")
LRA1 <- lm(`Sales Price (in $1000)` ~ `Square feet` + Rooms +
 Bedrooms + Age,data=HomedataSRS) #LRA1 is the regression model
effect_plot(LRA1, pred = 'Square feet', inherit.aes = FALSE,
 plot.points = TRUE) #function should create graph
newSF = seq(min(HomedataSRS$`Square feet`),
            max(HomedataSRS$`Square feet`), by = 0.05)
conf_interval <- predict(LRA1, newdata=data.frame(x=newSF),
                 interval="confidence",level = 0.95)
plot(HomedataSRS$`Square feet`, HomedataSRS$`Sales Price (in $1000)`,
     xlab="Square feet", ylab="Sales Price(in $1000)",     
     main="Regression")
abline(LRA1, col="lightblue")
matlines(newSF, conf_interval[,2:3], col = "blue", lty=2)
library(ggplot2)
SFHT <- HomedataSRS %>% select(1:2) 
#This is to select the 2 variables I'm working with
ggplot(SFHT, aes(x='Square feet', inherit.aes = FALSE, 
       y='Sales Price (in $1000)')) +
       geom_point(color='#2980B9', size = 4) +
       geom_smooth(method=lm, color='#2C3E50')

数据:

【问题讨论】:

  • 你试过ggpmisc吗?
  • 您可以发布您的数据样本(或一些假数据)吗?
  • @A.S.K.,我对我使用 set.seed(1) 发布的数据进行了 n=35 个样本
  • 谢谢!您还可以添加代码输出(使用dput(HomedataSRS) 或其子集)吗?这使得复制示例数据变得更加容易,因此我们可以在发布之前测试可能的解决方案。

标签: r ggplot2 regression confidence-interval


【解决方案1】:

不应引用aes() 的参数。试试

ggplot(SFHT, aes(x = `Square feet`, y = `Sales Price (in $1000)`)) +
   geom_point(color='#2980B9', size = 4) +
   geom_smooth(method=lm, color='#2C3E50')

或者,您可以使用新的aes_string() 函数:

ggplot(SFHT, aes_string(x='Square feet',y='Sales Price (in $1000)')) +
   geom_point(color='#2980B9', size = 4) +
   geom_smooth(method=lm, color='#2C3E50')

更多信息可在包装网站上找到:https://ggplot2.tidyverse.org/reference/aes_.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2021-08-16
    • 2010-11-13
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    相关资源
    最近更新 更多