【问题标题】:Quadratic and cubic regression in ExcelExcel中的二次和三次回归
【发布时间】:2012-06-07 02:33:13
【问题描述】:

我有以下信息:

  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 中构建二次和三次回归分析。我知道如何通过 Excel 中的线性回归来做到这一点,但是二次和三次呢?我搜索了很多资源,但找不到任何有用的东西。

【问题讨论】:

  • 我的“excel多项式回归”的第一个谷歌结果是people.stfx.ca/bliengme/ExcelTips/Polynomial.htm - 那有什么问题?!?
  • @deathApril 我建议你添加这个作为答案
  • @deathApril 我一直在谷歌上搜索如何在 Excel 中执行多项式回归。我已经找到你提到的链接;但我认为它与二次或四阶回归没有任何关系。我可能是错的:写得很糟糕。

标签: excel regression


【解决方案1】:

您需要对 Excel 的 LINEST 函数使用未记录的技巧:

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

背景

一个常规的线性回归计算(使用您的数据)为:

=LINEST(B2:B21,A2:A21)

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

您的数据:

是:

未记录的技巧 1

您还可以使用 Excel 计算回归,该公式使用与 1 不同的 x 的指数,例如x1.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 将同时使用 x1 和 x2 计算回归:

实际操作方法

不可能的棘手部分是没有明显的方法查看其他回归值。为此,您需要:

  • 选择包含您的公式的单元格:

  • 将所选内容向左扩展 2 个空格(您需要选择至少 3 个单元格宽):

  • F2

  • Ctrl+Shift+Enter

您现在将看到您的 3 个回归常数:

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

奖金聊天

我有一个函数,我想使用 some 指数执行回归:

y = m×xk + b

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

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

然后使用 Excel 输出完整的统计信息(LINEST 的第 4 个参数):

我告诉 Solver 最大化 R2

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

是:

【讨论】:

  • 谢谢!注意:如果您使用 Excel for Mac,请使用 CONTROL+U 执行数组公式,然后 ⌘+Z+RETURN
  • @Jesse 好的,我为你投票。编辑:嗯,我得到#VALUE!当我将此公式插入我的 Excel 2010 时...没关系,我必须使用 ;而不是 , 用于元素分隔符。 (希望这对某人有所帮助。)
  • @Alex:如果您的计算机设置为欧洲语言环境,即使用小数逗号(不是小数点),则必须将“{1,2}”更改为“{1 \2}”。 (此外,逗号当然必须改为分号。)
  • 这不是完全没有记录的。实际发生的是,您正在使用公式 known_x's^{array of powers} 在linest 函数中创建多个x 向量,然后对它们进行回归。还有一个重要的注意事项:如果你的 x 值是在行中,那么你必须使用分号而不是逗号来分隔权力列表(这会使你的权力数组变成一列而不是一行) .
  • 我可以用法语实现这个公式:=LINEST(B2:B21;A2:A21^{1.2}),每个指数度之间都有一个点。
【解决方案2】:

上一个答案中描述的 LINEST 函数是可行的方法,但显示输出的 3 个系数的更简单方法是另外使用 INDEX 函数。在一个单元格中,输入: =INDEX(LINEST(B2:B21,A2:A21^{1,2},TRUE,FALSE),1) (顺便说一下,我使用的 B2:B21 和 A2:A21 只是第一个回答这个问题的发帖人使用了相同的值……当然,您会适当地更改这些范围以匹配您的数据)。这给出了 X^2 系数。在相邻的单元格中,再次键入相同的公式,但将最后的 1 更改为 2...这给出了 X^1 系数。最后,在下一个单元格中,再次键入相同的公式,但将最后一个数字更改为 3... 这给出了常数。我确实注意到这三个系数非常接近,但与使用图表选项卡下的图形趋势线功能得出的系数并不完全相同。此外,我发现 LINEST 似乎仅在 X 和 Y 数据位于列(而不是行)中且范围内没有空单元格时才有效,因此如果您收到 #VALUE 错误,请注意这一点。

【讨论】:

  • 如果您的计算机设置为使用小数点逗号而不是小数点(即欧洲语言环境;例如“3,14”而不是“3.14”),则必须使用“{1,2}”改为“{1\2}”。是的,反斜杠!和往常一样,逗号必须改为分号。所以公式变为 =INDEX(LINEST(B2:B21;A2:A21^{1\2};TRUE;FALSE);1)
  • @Spanky 你也可以在行中使用 LINEST。只需添加转置。比如:=LINEST(TRANSPOSE(D9:M9);TRANSPOSE(D6:M6)^{1\2})
【解决方案3】:

我知道这个问题有点老了,但我想我会提供一个替代方案,在我看来,它可能会更容易一些。如果您愿意在数据集中添加“临时”列,可以使用 Excel 的分析工具包→数据分析→回归。进行二次或三次回归分析的秘诀在于定义输入 X 范围:

如果您要进行简单的线性回归,您只需要 2 列 X 和 Y。如果您要进行二次回归,则需要 X_1、X_2 和 Y,其中 X_1 是 x 变量,X_2 为 x^2;同样,如果您在做三次方,则需要 X_1、X_2、X_3 和 Y,其中 X_1 是 x 变量,X_2 是 x^2 和 X_3是 x^3。请注意输入 X 范围如何从 A1 到 B22,跨越 2 列。

下图是回归分析的输出。我强调了常见的输出,包括 R 平方值和所有系数。

【讨论】:

  • 感谢您的回答,我知道这有点老了,但我在这里有一个问题。用excel做回归时,输入不应该是独立的?如果是,我们如何选择这两列是 X 和 X^2 ?
猜你喜欢
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
相关资源
最近更新 更多