了解R

时间:2015-11-04 16:51:48

标签: r prediction

我正在尝试理解predict()的输出,并了解这种方法是否适合我正在尝试解决的问题。预测间隔对我来说没有意义,但是当我在散点图上绘制它时,它看起来像一个很好的模型:

enter image description here

我创建了一个简单的交易规模($)线性回归模型,公司的销售量作为预测变量。数据是伪造的,交易规模是销售量的倍数加上或减去一些噪音:

    Call:
lm(formula = deal_size ~ sales_volume, data = accounts)

Residuals:
      Min        1Q    Median        3Q       Max 
-19123502  -3794671  -3426616   4838578  17328948 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  3.709e+06  1.727e+05   21.48   <2e-16 ***
sales_volume 1.898e-01  2.210e-03   85.88   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 6452000 on 1586 degrees of freedom
Multiple R-squared:  0.823, Adjusted R-squared:  0.8229 
F-statistic:  7376 on 1 and 1586 DF,  p-value: < 2.2e-16

因此产生了预测:

d = data.frame(accounts, predict(fit, interval="prediction"))

当我在散点图上绘制sales_volume与deal_size,并将回归线与预测间隔叠加时,它看起来不错,除了一些跨越负值的区间,其中销售额为零或接近零。

我理解拟合是预测值,但是什么是lwr和upr?他们用绝对术语(y坐标)定义区间吗?如果我的模型很合适,那么间隔似乎非常宽,比有意义的要宽:

sales_volume    deal_size    fit            lwr          upr
0               0            3709276.494    -8950776.04  16369329.03
0               8586337.22   3709276.494    -8950776.04  16369329.03      
110000          549458.6512  3730150.811    -8929897.298 16390198.92

2 个答案:

答案 0 :(得分:5)

predictlm模型一起使用时,您可以指定interval。您有三种选择:none不会返回时间间隔,confidenceprediction。这两个都会返回不同的值。第一列将按照您所说的预测值(列fit)。然后,您还有另外两列:lwrupper,它们是置信区间的较低和较高级别。

confidenceprediction之间有什么区别?

confidence是一个(默认情况下为95%,如果您希望更改那个,请使用level)预测值均值的置信区间。这是你的情节上的绿色间隔。而prediction是所有价值的(也是95%)置信区间,这意味着如果你重复经验/调查/ ......很多次,你可以预期95%的价值会下降在黄色区间内,因此比绿色区域宽得多,因为绿色只评估平均值。

正如你在你的情节中看到的那样,几乎所有的值都在黄色区间内。 R不知道你的价值只能是正数,所以它解释了为什么黄色区间开始&#34;在0下。

另外,当你说&#34;间隔似乎非常宽,如果我的模型非常合适则更宽,你可以在你的情节中看到间隔不是那么大,考虑到您可以预期95%的值都在其中,并且您可以清楚地看到数据中的趋势。而且你的模型显然非常适合调整后的R平方和全局p值告诉你。

答案 1 :(得分:4)

上面对@etienne进行了轻微的改写,这非常好,准确。

置信区间是平均预测(或组响应)的(1-α;例如95%)区间。 IE如果您有10个新公司,销售量为2e+08predict(..., interval= "confidence")间隔将为您提供组平均值的长期平均间隔。

使用Var(\ hat y | X = x *)= \ sigma ^ 2(1 / n +(x * - \ bar x)^ 2 / SXX)

预测间隔是个体响应的(1-alpha;例如95%)间隔 - predict(..., interval= "predict")。对于销售量为2e+08 ...

的单个新公司的IE

使用Var(\ hat y | X = x *)= \ sigma ^ 2(1 + 1 / n +(x * - \ bar x)^ 2 / SXX)

(很抱歉不支持LaTeX)