Excel 统计函数:GROWTH

概要

本文介绍 Excel 中的 GROWTH 函数,说明了函数的使用方式,并将 Excel 2003 和更高版本的 Excel 函数的结果与早期版本的 Excel 中的 GROWTH 结果进行比较。 GROWTH 通过调用相关函数 LINEST 进行评估。 汇总了对 LINEST for Excel 2003 和更高版本的 Excel 的广泛更改,并指出了它们对 GROWTH 的影响。

Macintosh版Microsoft Excel 2004 信息

Excel 2004 for Mac 中的统计函数使用用于更新 Excel 2003 和更高版本的 Excel 中的统计函数的相同算法进行更新。 本文中介绍函数的工作原理或函数如何为 Excel 2003 或更高版本的 Excel 修改的任何信息也适用于 Excel 2004 for Mac。

详细信息

GROWTH(已知的 y 值, 已知的 x 值, 新的 x 值, 常量)函数用于执行回归分析,其中拟合了一条指数曲线。 使用最小平方标准,并且 GROWTH 会尝试在该条件下找到最佳拟合条件。 Known_y表示“依赖变量”上的数据,known_x表示一个或多个“独立变量”上的数据。 GROWTH 帮助文件讨论了在罕见情况下,第二个或第三个参数可能被省略的情形。

假设有 p 预测器变量,则 GROWTH 实质上调用 LOGEST。 LOGEST 函数拟合一个如下形式的方程:

y = b * (m1^x1) * (m2^x2) * ... * (mp^xp)

系数、b、m1、m2、...、mp 的值确定最适合 y 数据。

如果最后一个参数“constant”设置为 TRUE,则希望回归模型在回归模型中包括乘法系数 b。 如果设置为 FALSE,则通过基本将其设置为 1 来排除 b。 最后一个参数是可选的;如果省略该参数,则将其解释为 TRUE。

为便于本文其余部分的介绍,假定数据以列形式排列,以便known_y是 y 数据列,known_x是 x 数据的一列或多列。 每个列的维度(长度)必须相等。 New_x也将假定按列排列,并且new_x的列数必须与known_x数相同。 如果数据未按列排列,则下面的所有观察结果都同样真实,但更容易讨论单个(最常用的)事例。

计算最佳拟合回归模型(实质上调用 Excel 的 LOGEST 函数)后,GROWTH 将返回与new_x关联的预测值。

本文通过示例说明 GROWTH 如何与 LOGEST 相关,并指出在 Excel 2003 之前版本中 LOGEST 的问题如何导致使用 GROWTH 时出现问题。 GROWTH 有效地调用 LOGEST,执行 LOGEST,在 LOGEST 输出中使用回归系数来计算与new_x的每一行关联的预测 y 值,并将此预测 y 值列呈现给你。 因此,必须知道执行 LOGEST 时出现的问题。 调用 LOGEST 时,它会有效地调用 LINEST。 虽然尚未为 Excel 2003 和更高版本的 Excel 重写 GROWTH 和 LOGEST 代码,但 LINEST 代码中已进行了广泛的更改(和改进)。

作为本文的补充,强烈建议使用以下有关 LINEST 的文章。 它包含 EXCEL 2003 之前的 Excel 版本中 LINEST 的多个示例和文档问题。

有关 LINEST 的详细信息,请选择以下文章编号以查看Microsoft知识库中的文章:

828533 在 Excel 2003 和 Excel 2004 for Mac 中描述 LINEST 函数

根据 Excel 2003 的修订,还建议使用 LINEST 帮助文件。

以下有关 LOGEST 的文章介绍了 LOGEST 如何与 LINEST 交互。 此处省略了这些详细信息。

有关详细信息,请参阅 Excel 统计函数:LOGEST

由于本文的重点在于 Excel 版本早于 Excel 2003 的数值问题,因此本文没有许多使用 GROWTH 的实际示例。 GROWTH 中的帮助文件包含有用的示例。

语法

GROWTH(known_y's, known_x's, new_x's, constant)

参数、known_y、known_x和new_x必须是具有相关维度的数组或单元格区域。 如果 known_y 是 m 行的一列,那么 known_x 是 m 行 c 列,其中 c 大于或等于 1。 C 是预测器变量的数目;m 是数据点数。 然后,New_x必须是 c 列 r 行,其中 r 大于或等于 1。 如果数据呈现在行而非列中,相似的维度关系必须保持。逻辑参数“常量”必须设置为 TRUE 或 FALSE(或者 Excel 解释为 FALSE 或 TRUE 的 0 或 1)。 GROWTH 的最后三个参数都是可选的;有关省略第二个参数、第三个参数或两者的选项,请参阅 GROWTH 帮助文件;省略第四个参数将解释为 TRUE。

GROWTH 的最常见用法包括两个包含数据的单元格区域,例如 GROWTH(A1:A100、B1:F100、B101:F108、TRUE)。 由于通常有多个预测器变量,因此此示例中的第二个参数包含多个列。 在此示例中,每个主题有 100 个从属变量值(known_y),每个主题有五个依赖变量值(known_x)。 还有八个假设性主题,你希望使用 GROWTH 来计算预测的 y 值。

用法示例

提供了一个 Excel 工作表示例来演示以下关键概念:

  • GROWTH 如何与 LOGEST 交互
  • 由于早于 Excel 2003 的 Excel 版本中的已知共线x变量,GROWTH(或 LOGEST 和 LINEST)会出现问题。

注释

有关 LINEST 的文章中提供了对 LINEST 上下文中第二个项目符号项的广泛讨论。

若要说明 GROWTH 函数,请创建一个空白 Excel 工作表,复制下表,在空白 Excel 工作表中选择单元格 A1,然后粘贴这些条目,使下表填充工作表中的单元格 A1:K35。

一个 B C D E F G H J K
y: x's:
=EXP(F2) 1 2 1 1
=EXP(F3) 3 4 1 2
=EXP(F4) 4 5 1 3
=EXP(F5) 6 7 1 4
=EXP(F6) 7 8 1 5
新 x's: 9 11
12 14
使用 GROWTH 函数的列 B、C: Excel 2002 和早期版本的 Excel 的值:
Excel 2003 和更高版本的 Excel 的值:
=GROWTH(A2:A6,B2:C6,B7:C8,TRUE) #NUM! 472.432432563203
=GROWTH(A2:A6,B2:C6,B7:C8,TRUE) #NUM! 3400.16400895377
仅使用 B 列的增长
=GROWTH(A2:A6,B2:B6,B7:B8,TRUE) 472.432432563203 472.432432563203
=GROWTH(A2:A6,B2:B6,B7:B8,TRUE) 3400.16400895377 3400.16400895377
在 Excel 2003 和更高版本的 Excel 中拟合 LOGEST 结果中的值
使用 B列、C列 使用 Col B
=EXP(LN(K24)*1 + LN(J24)*B7 + LN(I24)*C7) =EXP(LN(J31)*1 + LN(I31)*B7)
=EXP(LN(K24)*1 + LN(J24)*B8 + LN(I24)*C8) =EXP(LN(J31)*1 + LN(I31)*B8)
使用 B、C 列的 LOGEST: Excel 2002 和早期版本的 Excel 的值: Excel 2003 和更高版本的 Excel 的值:
=LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) #NUM! #NUM! #NUM! 1 1.9307233720034 1.26724101129183
=LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) #NUM! #NUM! #NUM! 0 0.043859649122807 0.206652964726136
=LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) #NUM! #NUM! #NUM! 0.986842105263158 0.209426954145848 #N/A
=LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) #NUM! #NUM! #NUM! 225 3 #N/A
=LOGEST(A2:A6,B2:C6,真,真) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) =LOGEST(A2:A6,B2:C6,TRUE,TRUE) #NUM! #NUM! #NUM! 9.86842105263158 0.131578947368421 #N/A
仅使用 col B 的 LOGEST
=LOGEST(A2:A6,B2:B6,TRUE,TRUE) =LOGEST(A2:A6,B2:B6,TRUE,TRUE) 1.9307233720034 1.26724101129183 1.9307233720034 1.26724101129183
=LOGEST(A2:A6,B2:B6,TRUE,TRUE) =LOGEST(A2:A6,B2:B6,TRUE,TRUE) 0.0438596491228071 0.206652964726136 0.043859649122807 0.206652964726136
=LOGEST(A2:A6,B2:B6,TRUE,TRUE) =LOGEST(A2:A6,B2:B6,TRUE,TRUE) 0.986842105263158 0.209426954145848 0.986842105263158 0.209426954145848
=LOGEST(A2:A6,B2:B6,TRUE,TRUE) =LOGEST(A2:A6,B2:B6,TRUE,TRUE) 224.999999999999 3 225 3
=LOGEST(A2:A6,B2:B6,TRUE,TRUE) =LOGEST(A2:A6,B2:B6,TRUE,TRUE) 9.86842105263158 0.131578947368421 9.86842105263158 0.131578947368421

注释

将此表粘贴到新的 Excel 工作表中后,选择“ 粘贴选项 ”按钮,然后选择“ 匹配目标格式”。 在保持粘贴范围选定的状态下,根据所使用的 Excel 版本选择以下操作之一:

  • 在 Microsoft Office Excel 2007 中,选择“开始”选项卡,在“单元格”组中选择“格式”,然后选择“自动调整列宽”。
  • 在 Excel 2003 中,首先指向格式菜单中的,然后选择自动调整选择

GROWTH 的数据位于单元格 A1:C8 中。 (单元格 D2:D6 中的条目不是数据的一部分,但用于下图。早期版本的 Excel 和更高版本的 Excel 的两个不同模型的 GROWTH 结果分别显示在单元格 E10:E16 和 I10:116 中。 单元格 A10:A16 的结果将与所使用的 Excel 版本相对应。 目前,当你调查 GROWTH 如何调用 LOGEST 以及 GROWTH 如何使用 LOGEST 结果时,请重点关注 Excel 2003 和更高版本的 Excel 的结果。

可以在以下步骤中将 GROWTH 和 LOGEST 视为交互:

  1. 你调用 GROWTH(“known_y's”、“known_x's”、“new_x's”、constant)
  2. GROWTH 调用 LOGEST(known_y's、known_x's、constant、TRUE)
  3. 从 LOGEST 的调用中获取回归系数。 这些系数显示在 LOGEST 输出表的第一行中。
  4. 对于每个new_x行,根据这些 LOGEST 系数和该行中new_x的值计算预测的 y 值。
  5. 步骤 4 中的计算值被返回到对应于该 new_x 行的 GROWTH 输出的适当单元格中。

如果 GROWTH 返回适当的结果,则 LOGEST 必须在步骤 3 中生成适当的结果。 由于步骤 3 中 LOGEST 的评估需要调用 LINEST,因此必须确保 LINEST 表现良好。 在早于 Excel 2003 的 Excel 版本中,LINEST 的问题源于共线性预测变量列。 (在早期版本的 Excel 中,当 GROWTH 的最后一个参数设置为 FALSE 时,LINEST 和 LOGEST 会存在其他问题。然而,这些问题并不影响 GROWTH 的结果,因此此处不做讨论。)

如果至少有一列 c 可以表示为其他列 c1、c2 和其余列的倍数之和,则预测列(known_x's)是共线的。 列 c 通常称为冗余,因为它包含的信息可以从列 c1、c2 和其他列构造。 共性存在的基本原则是,无论冗余列包含在原始数据中还是从原始数据中删除,结果都应不受影响。 由于在早于 Excel 2003 的版本中,LINEST 没有检测共线性,因此此原则很容易被违反。 如果至少有一列 c 可以表示为几乎等于其他列 c1、c2 和其他列的倍数的总和,则预测列几乎共线。 在这种情况下,“几乎相等”表示 c 中条目与 c1、c2 和其他列的加权总和中相应条目的平方偏差小和。 例如,“非常小”可能小于 10^(-12)。

第一个模型在第 10 行到 12 行中,使用列 B 和 C 作为预测器,并请求 Excel 对常量进行建模(最后一个参数设置为 TRUE)。 然后,Excel 会有效地插入类似于单元格 D2:D6 的其他预测器列。 很容易注意到,第 2 到 6 行 C 列中的条目与 B 列和 D 中的相应条目之和完全相等。因此,由于 C 列是下列项的倍数之和,因此存在共余数:

  • B 列
  • 由于 LOGEST 的第三个参数被省略或设置为 TRUE(常见情况),Excel 会插入一个额外的由 1 组成的列。

这会导致 Excel 2003 之前的版本无法计算结果,因为存在此类数字问题。 因此,GROWTH 输出表填充了 #NUM!。

第二个模型(行 14 到 16 行)是任何版本的 Excel 都可以成功处理的模型。 没有共合度,用户再次请求 Excel 对常量进行建模。 出于以下原因,此处包含此模型:

  • 首先,这在实际案例中是最典型的情况:不存在共线性。 这些事例在所有版本的 Excel 中都得到足够的处理。 如果你拥有早期版本的 Excel,则可以放心,数值问题不太可能出现在最常见的实际情况下。
  • 其次,此示例用于比较两个模型中 Excel 2003 和更高版本的 Excel 的行为。 大多数主要统计软件包会分析共线性,删除那些是其他预测器列线性组合的列,并向用户发出类似“列 C 线性依赖于其他预测器列,并已从分析中删除”的消息以提醒用户。

在 Excel 2003 和更高版本的 Excel 中,此类消息不会在警报或文本字符串中传达,而是在 LOGEST 输出表中传达。 GROWTH 没有向用户传递此类消息的机制。 在 LOGEST 输出表中,一个回归系数为 1 且其标准误差为 0 的回归系数,表示对应已从模型中移除的列的系数。 LOGEST 输出表包含在与行 10 到 16 中的 GROWTH 输出对应的行 23 到 35 中。 单元格 I24至I25 中的条目显示已删除的冗余预测器列。 在这种情况下,LOGEST 选择删除列 C(单元格 I24、J24、K24 中的系数分别对应于 C、B 和 Excel 的常量列)。 如果存在共正弦性,则可以删除涉及的任何列,并且选择是任意的。

在第 30 行到 35 行的第二个模型中,没有共线性,也没有删除任何列。 可以看到,这两个模型中预测的 y 值相同。 之所以会出现此问题,是因为删除一个冗余列(该列是其他列的倍数之和)不会降低生成模型的拟合优度。 此类列被精确删除,因为它们在尝试查找最佳最小二乘法拟合时没有增值。 此外,如果在 Excel 2003 和更高版本的 Excel 中检查单元格 I23:K35 中的 LOGEST 输出,你会注意到输出表的最后三行是相同的。 此外,单元格 I31:J32 和单元格 J24:K25 中的条目重合。 它演示了当模型中包含 C 列时,得到相同的结果,但经发现是多余的(其输出位于单元格 I24:K28),就像在运行 LOGEST 之前消除了 C 列一样(其输出位于单元格 I31:J35)。 这满足共线性存在的基本原则。

在单元格 A18:C21 中,Microsoft使用 Excel 2003 和更高版本的 Excel 中的数据来说明 GROWTH 如何获取 LOGEST 输出并计算相关的预测 y 值。 通过检查单元格 A20:A21 和单元格 C20:C21 中的公式,可以查看 LOGEST 系数如何与两个模型的单元格 B7:C8 中的new_x数据相结合(使用列 B、C 作为预测器;仅使用列 B 作为预测器)。

在 Excel 2003 和更新版本中,LOGEST 因调用 LINEST 而能识别共线性。 LINEST 使用不同的方法来求解回归系数。 此方法是 QR 分解。 LINEST 文章中包含一个关于 QR 分解算法的小示例演练。

早期版本的 Excel 中结果摘要

在早于 Excel 2003 的 Excel 版本中,增长结果受到不利影响,因为 LOGEST 中的结果不准确,反过来又源于 LINEST 中的不准确结果。

LINEST 是使用一种不注意共性问题的方法计算的。 共线性的存在导致了舍入误差、回归系数的不当标准错误和不适当的自由度。 有时舍入问题非常严重,LINEST 会用 #NUM! 填充其输出表。 如果您像在大多数实际情况下那样可以确信不存在共线(或近乎共线)的预测列,那么 LINEST 通常会提供可接受的结果。 因此,如果能够看到没有共线(或几乎共线)预测器列,则 GROWTH 的用户同样可以放心。

Excel 2003 及更高版本中 Excel 中的结果摘要

LINEST 的改进包括切换到确定回归系数的 QR 分解方法。 QR 分解具有以下优点:

  • 更好的数字稳定性(通常,较小的舍入错误)
  • 对共线性问题的分析

本文中演示的 Excel 版本的所有问题都已针对 Excel 2003 和更高版本的 Excel 进行了更正。 LINEST 中的这些改进转化为 LOGEST 和 GROWTH 中的改进。

结论

GROWTH 的性能得到了提高,因为对于 Excel 2003 和更高版本的 Excel,LINEST 已大大提高。 LINEST 中的改进也会影响 LOGEST,因为 GROWTH 调用了 LOGEST。 早期版本的 Excel 用户应在使用 GROWTH 之前验证预测器列是否不合序。

本文和 LINEST 文章中介绍的大部分材料可能首先对早于 Excel 2003 版本的 Excel 用户发出警报。 但是,应指出,只有少数情况下,共线性是一个问题。 早期版本的 Excel 在没有共线性时提供可接受的 GROWTH 结果。

幸运的是,LINEST 中的改进还会影响分析工具库的线性回归工具(此工具调用 LINEST)和其他两个相关的 Excel 函数:LOGEST 和 TREND。