【发布时间】: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