Excel中的二次和三次回归

我有以下信息:

Height Weight 170 65 167 55 189 85 175 70 166 55 174 55 169 69 170 58 184 84 161 56 170 75 182 68 167 51 187 85 178 62 173 60 172 68 178 55 175 65 176 70 

我想在Excel中构build二次和三次回归分析。 我知道如何通过Excel中的线性回归来做到这一点,但二次和立方呢? 我搜查了很多资源,但找不到任何有用的东西。

您需要使用Excel的LINEST函数使用未公开的技巧:

 =LINEST(known_y's, [known_x's], [const], [stats]) 

背景

一个规则的线性回归计算(与您的数据)为:

 =LINEST(B2:B21,A2:A21) 

它返回一个单值,线性斜率( m )根据公式:

在这里输入图像说明

哪些为您的数据:

在这里输入图像说明

是:

在这里输入图像说明

无证技巧数字1

您也可以使用Excel来计算回归,其公式使用x不等于1的指数,例如x 1.2

在这里输入图像说明

使用公式:

 =LINEST(B2:B21, A2:A21^1.2) 

这为你的数据:

在这里输入图像说明

是:

在这里输入图像说明

你不限于一个指数

Excel的LINEST函数也可以计算多个回归,同时在x上有不同的指数,例如:

 =LINEST(B2:B21,A2:A21^{1,2}) 

注意:如果区域设置为欧洲(十进制符号“,”),则逗号应该用分号和反斜杠替代,即=LINEST(B2:B21;A2:A21^{1\2})

现在,Excel将同时使用x 1和x 2来计算回归:

在这里输入图像说明

如何真正做到这一点

不可能的棘手的部分没有明显的方法来看其他回归值。 为了做到这一点,你需要:

  • select包含你的公式的单元格:

    在这里输入图像说明

  • 扩展select左边的2个空格(您需要select至less3个单元格宽):

    在这里输入图像说明

  • F2

  • 按下Ctrl + Shift + Enter

    在这里输入图像说明

你现在将看到你的3个回归常量:

  y = -0.01777539x^2 + 6.864151123x + -591.3531443 

奖金喋喋不休

我有一个函数,我想用一些指数进行回归:

y = m×x k + b

但我不知道指数。 所以我改变LINEST函数来使用单元格引用:

 =LINEST(B2:B21,A2:A21^F3, true, true) 

用Excel然后输出完整的统计数据(第四个参数为LINEST ):

在这里输入图像说明

我告诉求解器最大化R 2

在这里输入图像说明

它可以找出最好的指数。 哪个给你数据:

在这里输入图像说明

是:

在这里输入图像说明

我知道这个问题有点老了,但是我认为我会提供一个替代scheme,在我看来,这个scheme可能会更简单一些。 如果您愿意将“临时”列添加到数据集,则可以使用Excel的分析工具库→数据分析→回归。 进行二次或三次回归分析的秘诀在于定义inputX范围:

如果你正在做一个简单的线性回归,你所需要的只是2列X和Y.如果你正在做一个二次方程,你需要X_1,X_2,&Y,其中X_1是xvariables,X_2是x ^ 2 ; 同样,如果你正在做一个立方体,你将需要X_1,X_2,X_3,&Y,其中X_1是xvariables,X_2是x ^ 2 ,X_3是x ^ 3 。 注意inputX范围是从A1到B22,跨越2列。

Excel中二次回归分析的输入

以下图像是回归分析的输出。 我已经突出了常见的输出,包括R平方值和所有的系数。

Excel中二次回归分析的系数

上一个答案中描述的LINEST函数是要走的路,但显示输出的3个系数的更简单的方法是另外使用INDEX函数。 在一个单元格中,键入:= INDEX(LINEST(B2:B21,A2:A21 ^ {1,2},TRUE,FALSE),1)(顺便说一句,我使用的B2:B21和A2:A21只是相同的价值第一个海报谁回答了这个使用…当然,你会改变这些范围适当匹配您的数据)。 这给出了X ^ 2系数。 在相邻的单元格中,再次input相同的公式,但将最终的1更改为2 …这将给出X ^ 1系数。 最后,在下一个单元格中,再次input相同的公式,但将最后一个数字更改为3 …这个常数。 我注意到这三个系数非常接近,但与使用图表选项卡下的graphics趋势线function得出的结果并不完全相同。 另外,我发现LINEST只在X和Y数据在列(不是行)的情况下才起作用,范围内没有空单元,所以要注意,如果你得到#VALUE错误。