R 如何为绘图上的每个因子添加回归线

R 如何为绘图上的每个因子添加回归线,r,plot,R,Plot,我已经创建了一个模型,我正在尝试添加适合数据两部分的曲线,绝缘和无绝缘。我在考虑使用绝缘系数作为真/假术语,但我不确定如何将其转换为代码。条目1:56为“w/o”,条目57:101为“w/”。我不确定如何包含我正在使用的数据,但这里是头尾信息: month year kwh days est cost avgT dT.yr kWhd.1 id insulation 1 8 2003 476 21 a 33.32 69 -8 22.66667 1

我已经创建了一个模型,我正在尝试添加适合数据两部分的曲线,绝缘和无绝缘。我在考虑使用绝缘系数作为真/假术语,但我不确定如何将其转换为代码。条目1:56为“w/o”,条目57:101为“w/”。我不确定如何包含我正在使用的数据,但这里是头尾信息:

  month year  kwh days est   cost avgT dT.yr   kWhd.1 id insulation
1     8 2003  476   21   a  33.32   69    -8 22.66667  1        w/o
2     9 2003 1052   30   e 112.33   73    -1 35.05172  2        w/o
3    10 2003  981   28   a  24.98   60    -6 35.05172  3        w/o
4    11 2003 1094   32   a  73.51   53     2 34.18750  4        w/o
5    12 2003 1409   32   a  93.23   44     6 44.03125  5        w/o
6     1 2004 1083   32   a  72.84   34     3 33.84375  6        w/o

    month year kwh days est  cost avgT dT.yr   kWhd.1  id insulation
96      7 2011 551   29   e 55.56   72     0 19.00000  96         w/
97      8 2011 552   27   a 61.17   78     1 20.44444  97         w/
98      9 2011 666   34   e 73.87   71    -2 19.58824  98         w/
99     10 2011 416   27   a 48.03   64     0 15.40741  99         w/
100    11 2011 653   31   e 72.80   53     1 21.06452 100         w/
101    12 2011 751   33   a 83.94   45     2 22.75758 101         w/

bill$id
ggplot2
使这比基本打印容易得多。像这样的方法应该会奏效:

ggplot(bill, aes(x = avgT, y = kWhd.1, color = insulation)) +
  geom_smooth(method = "lm", formula = y ~ x + I(x^2), se = FALSE) +
  geom_point()
base
中,我将创建一个数据帧,其中包含您要预测的点,如

pred_data = expand.grid(
  kWhd.1 = seq(min(bill$kWhd.1), max(bill$kWhd.1), length.out = 100),
  insulation = c("w/", "w/o")
)
pred_data$prediction = predict(m1, newdata = pred_data)

然后使用
将预测添加到绘图中。我的基本图形非常生锈,因此如果您需要,我将把它留给您(或其他回答者)。

在基本R中,订购
x
-值很重要。由于这需要在多个因素上完成,因此我们可以通过
by
来完成,从而生成一个列表
L

由于您的示例数据不完整,这里有一个例子,代码<> IRIS >我们考虑<代码>物种<代码>作为“因素”。 收益率


可能有一个
ggplot(…组=绝缘)
缺失?
pred_data = expand.grid(
  kWhd.1 = seq(min(bill$kWhd.1), max(bill$kWhd.1), length.out = 100),
  insulation = c("w/", "w/o")
)
pred_data$prediction = predict(m1, newdata = pred_data)
L <- by(iris, iris$Species, function(x) x[order(x$Petal.Length), ])
with(iris, plot(Sepal.Width ~ Petal.Length, col=Species))
sapply(seq(L), function(x) 
  lines(L[[x]]$Petal.Length, 
        predict(loess(Sepal.Width ~ Petal.Length, L[[x]], span=1.1)),  # span=1.1 for smoothing
        col=x))