Построение линии линейной регрессии с доверительным интервалом - PullRequest
2 голосов
/ 08 апреля 2019

Я пытаюсь изобразить, как «квадратные футы» дома влияют на «продажную цену (в $ 1000)» того же самого. В частности, я хочу, чтобы линия коэффициента от Квадратных футов против Продажной цены была построена с гипотетической серой областью вокруг линии с наложенными исходными точками данных.

Я пытался завершить это несколькими разными способами. Один из способов, которые я попробовал, - это использовать функцию effect_plot из библиотеки (jtools). Я использовал кодировку, найденную в https://cran.r -project.org / web / packages / jtools / vignettes / effect_plot.html .

Но когда я запускаю эту функцию, я не получаю график, я просто получаю ошибку: Ошибка в FUN (X [[i]], ...): объект 'Sales Price (in $1000)' не найден.

Второй способ, который я попытался сделать, - вручную создать новый вектор и попытаться построить доверительный интервал. Мой код вдохновляет Построение 95% доверительного интервала для объекта lm .

Но при этом я получаю сообщение об ошибке в строке conf_interval: Ошибка в eval (predvars, data, env): объект "Квадратные футы" не найден. Я не могу понять, как исправить эту ошибку.

И, наконец, я попытался использовать библиотеку (ggplot2) для завершения проблемы с вдохновением от https://rpubs.com/aaronsc32/regression-confidence-prediction-intervals.

Но каждый раз, когда я запускаю 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')

Данные: I take an n=35 random sample of this data with set.seed(1)

1 Ответ

1 голос
/ 08 апреля 2019

аргументы 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

...