为什么线性回归不能预测简单确定性序列的结果?


9

我的一位同事向我发送了这个问题,显然是在互联网上巡回演出:

If $3 = 18, 4 = 32, 5 = 50, 6 = 72, 7 = 98$, Then, $10 =$ ?

答案似乎是200。

3*6  
4*8  
5*10  
6*12  
7*14  
8*16  
9*18  
10*20=200  

当我在R中进行线性回归时:

data     <- data.frame(a=c(3,4,5,6,7), b=c(18,32,50,72,98))  
lm1      <- lm(b~a, data=data)  
new.data <- data.frame(a=c(10,20,30))  
predict  <- predict(lm1, newdata=new.data, interval='prediction')  

我得到:

  fit      lwr      upr  
1 154 127.5518 180.4482  
2 354 287.0626 420.9374  
3 554 444.2602 663.7398  

所以我的线性模型预测。10=154

当我绘制数据时,它看起来是线性的……但是显然我认为这是不正确的。

我正在尝试学习如何在R中最好地使用线性模型。分析此系列的正确方法是什么?我哪里做错了?


7
咳咳。(i)问题的表达是荒谬的。3 = 18 意图肯定是类似;(ii)如可以看到足够写,,等等,当然就可看到足够在每个那些(分裂的第二项,,等等),以便然后写:,等,并立即发现二次,。(您做了最困难的部分,下一步就更简单了!)f(3)=1818=3×632=4×86=3×28=4×218=3×3×232=4×4×2f(x)=2x2
Glen_b-恢复莫妮卡(Monica

4
此外,问题是否在答案中指定了最低信息含量标准?如果我没记错数学,那么有无数无数个适合这些观点的函数,它们都为提供了不同的答案。我通常不做书呆子,但浪费时间的电子邮件值得这样做。f(10)
亮星

1
@TrevorAlexander如果您认为这个问题很浪费时间,为什么还要回答呢?显然,有些人觉得它很有趣。
jwg 2014年

Answers:


23

回归模型(例如by by)lm()隐式假定基础数据生成过程是概率性的。您假设要建模的规则是确定性的。因此,您尝试做的事情与尝试做事的方法之间是不匹配的。

还有其他软件(即非R)经过明确设计,以查找/使最简单的函数适合确定性数据(例如Eureqa)。可能有一个R包(我不知道),但是R是用于概率数据的统计建模的。

至于lm()给您的答案,它看起来很合理,可能是正确的。但是,我收集提出该问题的上下文强烈暗示应将其理解为确定性的。如果不是这种情况,并且您想知道拟合是否合理,您可能会注意到一件事,即两个极端数据点都在回归线之上,而中间数据都在回归线之下。这表明功能形式指定不正确。这也可以在残差与拟合图plot(lm1, which=1)中看到:

在此处输入图片说明

至于@AlexWilliams适合的模型,它看起来要好得多:

在此处输入图片说明


17
+1剩余剧情以无法错过的方式讲述故事。的确,这表明了为什么OP的“看起来呈线性”常常会产生误导-如果仅看一些不接近转折点的点,许多曲线函数就可能看起来“几乎呈直线”。如果您认为它是线性的,请将该线取出,看看还剩下什么!
Glen_b-恢复莫妮卡2014年

1
有用的信息!谢谢,我真的很感激
Brett Phinney 2014年

1
这与概率数据和确定性数据之间的区别绝对无关。如果线性回归是线性的,则将拟合并外推确定性数据。如果基础模型是二次方的,就无法很好地预测概率数据。
jwg 2014年

3
@jwg:这与它有很多关系。还是当没有低阶多项式给出完美拟合时,您是否总是将观测值序列与第次多项式拟合?n(n1)
Scortchi-恢复莫妮卡

我认为他不是在寻找合适的人选。他试图理解为什么外推值如此之遥。
jwg 2014年

22

趋势是二次非线性的。尝试:

lm1 <- lm(b~I(a^2), data=data)

更新:这是代码。

data <- data.frame(a=c(3,4,5,6,7),b=c(18,32,50,72,98))
lm1 <- lm(b~I(a^2), data=data)
new.data <- data.frame(a=c(10,20,30))
predict(lm1, newdata = new.data, interval='prediction')

并输出:

   fit  lwr  upr
1  200  200  200
2  800  800  800
3 1800 1800 1800

这个答案对我来说似乎有点循环:问题的全部重点是认识二次行为。您正确地指出,一旦指定了二次行为,线性回归就可以找到系数。但是实际上,在您写下此答案的第一行时,您已经进行了至关重要的分析
whuber

5
@whuber-问题是为什么线性模型会失败。它失败了,因为功能形式不是线性的,而是二次的。我想简单给出答案。Gung的答案很好地深入了细节,并展示了如何使用残差图来得出更好的模型。(我只是用笔和纸做的。)我同意他的回答更加详细和完整,我对此表示赞同。
Alex Williams

13

我犹豫要添加Alex Williams和gung给出的出色答案,但我认为还有一点需要提出。该问题使用短语“线性回归”和“线性模型”,可能暗示它们的含义相同。但是,“线性回归”的通常含义是指经典线性回归模型(CLRM),其中“线性”表示“参数中的线性”。这是参数的条件,而不是独立变量的条件。因此,二次模型如下:

Yi=β1+β2Xi2

就CLRM而言,它仍然是线性的,因为它在参数和是线性的。相比之下,该模型:β1β2

Yi=β1+β2Xi

其参数是线性的,并且在也是线性的。与其说它是线性模型,不如说是更精确的说法是它的参数是线性的并且具有线性函数形式。因此可以说,该序列可以通过参数线性的模型进行分析,只要它具有二次函数形式(如Alex Williams所示),而不能通过具有线性函数形式的模型进行分析。Xi


1
我总是很难记住这一点。这是对其他答案的很好补充。
naught101
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.