热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Excel中使用LINEST函数进行多元线性回归分析?

LINEST函数利用最小二乘法计算与现有数据最佳拟合的直线,从而得出直线的统计值,并返回描述该直线的数组。此外,LINEST函数还可以与其他函数配合使用,以实现更复杂的多元线性回归分析。通过合理运用LINEST函数,用户可以在Excel中高效地进行数据分析和预测建模。

LINEST 函数可通过使用最小二乘法计算与现有数据最佳拟合的直线,来计算某直线的统计值,然后返回描述此直线的数组。也可以将 LINEST 与其他函数结合使用来计算未知参数中其他类型的线性模型的统计值,包括多项式、对数、指数和幂级数。因为此函数返回数值数组,所以必须以数组公式的形式输入。请按照本文中的示例使用此函数。

直线的公式为:y = mx + b

- 或 -y = m1x1 + m2x2 + ... + b

如果有多个区域的 x 值,其中因变量 y 值是自变量 x 值的函数。m 值是与每个 x 值相对应的系数,b 为常量。注意,y、x 和 m 可以是向量。LINEST 函数返回的数组为 {mn,mn-1,...,m1,b}。LINEST 函数还可返回附加回归统计值。语法LINEST(known_y's, [known_x's], [const], [stats])

LINEST 函数语法具有以下[color=rgb(153, 153, 153) !important]参数:语法Known_y's    必需。关系表达式 y = mx + b 中已知的 y 值集合。

如果 known_y's 对应的单元格区域在单独一列中,则 known_x's 的每一列被视为一个独立的变量。

如果 known_y's 对应的单元格区域在单独一行中,则 known_x's 的每一行被视为一个独立的变量。

Known_x's    可选。关系表达式 y = mx + b 中已知的 x 值集合。

known_x's 对应的单元格区域可以包含一组或多组变量。如果仅使用一个变量,那么只要 known_y's 和 known_x's 具有相同的维数,则它们可以是任何形状的区域。如果使用多个变量,则 known_y's 必须为向量(即必须为一行或一列)。

如果省略 known_x's,则假设该数组为 {1,2,3,...},其大小与known_y's 相同。

const    可选。一个逻辑值,用于指定是否将常量 b 强制设为 0。

如果 const 为 TRUE 或被省略,b 将按通常方式计算。

如果 const 为 FALSE,b 将被设为 0,并同时调整 m 值使 y = mx。

stats    可选。一个逻辑值,用于指定是否返回附加回归统计值。

如果 stats 为 TRUE,则 LINEST 函数返回附加回归统计值,这时返回的数组为 {mn,mn-1,...,m1,b;sen,sen-1,...,se1,seb;r2,sey;F,df;ssreg,ssresid}。

如果 stats 为 FALSE 或被省略,LINEST 函数只返回系数 m 和常量 b。

附加回归统计值如下:统计值说明

se1,se2,...,sen系数 m1,m2,...,mn 的标准误差值。

seb常量 b 的标准误差值(当 const 为 FALSE 时,seb = #N/A)。

r2判定系数。y 的估计值与实际值之比,范围在 0 到 1 之间。如果为 1,则样本有很好的相关性,y 的估计值与实际值之间没有差别。相反,如果判定系数为 0,则回归公式不能用来预测 y 值。有关如何计算 r2 的信息,请参阅本主题下文中的“说明”。

seyY 估计值的标准误差。

FF 统计或 F 观察值。使用 F 统计可以判断因变量和自变量之间是否偶尔发生过可观察到的关系。

df自由度。用于在统计表上查找 F 临界值。将从表中查得的值与LINEST 函数返回的 F 统计值进行比较可确定模型的置信区间。有关如何计算 df 的信息,请参阅本主题下文中的“说明”。

ssreg回归平方和。

ssresid残差平方和。有关如何计算 ssreg 和 ssresid 的信息,请参阅本主题下文中的“说明”。

下面的图示显示了附加回归统计值返回的顺序。

a4389ae8f0dfe01aae783d4bc5263170.png说明可以使用斜率和 y 轴截距描述任何直线:

斜率 (m):

通常记为 m,如果需要计算斜率,则选取直线上的两点,(x1,y1) 和 (x2,y2);斜率等于 (y2 - y1)/(x2 - x1)。

Y 轴截距 (b):

通常记为 b,直线的 y 轴的截距为直线通过 y 轴时与 y 轴交点的数值。

直线的公式为 y = mx + b。如果知道了 m 和 b 的值,将 y 或 x 的值代入公式就可计算出直线上的任意一点。还可以使用 TREND 函数。当只有一个自变量 x 时,可直接利用下面公式得到斜率和 y 轴截距值:

斜率:

=INDEX(LINEST(known_y's,known_x's),1)

Y 轴截距:

=INDEX(LINEST(known_y's,known_x's),2)数据的离散程度决定了 LINEST 函数计算的直线的精确度。数据越接近线性,LINEST 模型就越精确。LINEST 函数使用最小二乘法来判定数据的最佳拟合。当只有一个自变量 x 时,m 和 b 是根据下面的公式计算出的:

1a78904ae126763b4a2311cbc761c836.png

16affefeccd42637dd3d1f706f9b1c62.png

其中,x 和 y 是样本平均值;即,x = AVERAGE(known x's),y = AVERAGE(known_y's)。直线和曲线拟合函数 LINEST 和 LOGEST 可用来计算与给定数据拟合程度最高的直线或指数曲线,但需要判断两者中哪一个与数据拟合程度最高。可以用函数 TREND(known_y's,known_x's) 来计算直线,或用函数GROWTH(known_y's, known_x's) 来计算指数曲线。这些不带new_x's 参数的函数可在实际数据点上根据直线或曲线来返回 y 预测值的数组,然后可以将预测值与实际值进行比较。可能需要用图表方式来直观地比较二者。

回归分析时,Excel 会计算每一点的 y 的估计值和实际值的平方差。这些平方差之和称为残差平方和 (ssresid)。然后 Excel 会计算总平方和 (sstotal)。当参数 const = TRUE 或被省略时,总平方和是 y 的实际值和平均值的平方差之和。当参数 const = FALSE 时,总平方和是 y 的实际值的平方和(不需要从每个 y 值中减去平均值)。回归平方和 (ssreg) 可通过公式 ssreg = sstotal - ssresid 计算出来。残差平方和与总平方和的比值越小,判定系数 r2 的值就越大,r2 是用来判断从回归分析求得的公式是否足以说明变量之间关系的指示器。r2 = ssreg/sstotal。

在某些情况下,一个或多个 X 列可能没有出现在其他 X 列中的附加预测值(假设 Y's 和 X's 位于列中)。换句话说,删除一个或多个 X 列可能会得到同样精度的 y 预测值。在这种情况下,应从回归模型中省略这些多余的 X 列。这种现象被称为“共线”,因为任何多余的 X 列都可被表示为多个非多余 X 列的和。LINEST 函数会检查是否存在共线,并在识别出多余的 X 列之后从回归模型中删除所有这些列。由于包含 0 系数以及 0 se 数值,因此已删除的 X 列能在 LINEST 输出中被识别出来。如果一个或多个多余的列被删除,则将影响 df,原因是 df 取决于实际用于预测目的的 X 列的数量。有关计算 df 的详细信息,请参阅const = TRUE 或被省略,则 LINEST 函数可有效地插入所有 1 数值的其他 X 列以便为截距建立模型。如果在一列中,1 对应于每个男性对象,0 对应于女性对象;而在另一列中,1 对应于每个女性对象,0 对应于男性对象,那么后一列就是多余的,因为其中的项可通过从所有 1 值的另一列(通过 LINEST 函数添加)中减去“男性指示器”列中的项来获得。

在没有 X 列因共线而被从模型中删除时,请用以下方法计算 df 的值:如果 known_x’s 有 k 列且 const = TRUE 或被省略,那么 df = n – k – 1。如果 const = FALSE,那么 df = n - k。在这两种情况下,每次由于共线而删除一个 X 列都会使 df 的值加 1。

对于返回结果为数组的公式,必须以数组公式的形式输入。

注释  在 Excel Web App 中,不能创建数组公式。当输入一个数组常量(如 known_x's)作为参数时,请使用逗号分隔同一行中的各值,使用分号分隔各行。分隔符可能会因区域设置的不同而有所不同。

注意,如果 y 的回归分析预测值超出了用来计算公式的 y 值的范围,它们可能是无效的。

LINEST 函数中使用的下层算法与 SLOPE 和 INTERCEPT 函数中使用的下层算法不同。当数据未定且共线时,这些算法之间的差异会导致不同的结果。例如,如果参数 known_y's 的数据点为 0,参数 known_x's的数据点为 1:

LINEST 会返回值 0。LINEST 函数的算法用来返回共线数据的合理结果,在这种情况下至少可找到一个答案。

SLOPE 和 INTERCEPT 会返回错误 #DIV/0!。SLOPE 和 INTERCEPT函数的算法只用来查找一个答案,在这种情况下可能有多个答案。

除了使用 LOGEST 计算其他回归分析类型的统计值外,还可以使用LINEST 计算其他回归分析类型的范围,方法是将 x 和 y 变量的函数作为 LINEST 的 x 和 y 系列输入。例如,下面的公式:

=LINEST(yvalues, xvalues^COLUMN($A:$C))

将在您使用 y 值的单个列和 x 值的单个列计算下面的方程式的近似立方(多项式次数 3)值时运行:

y = m1*x + m2*x^2 + m3*x^3 + b

可以调整此公式以计算其他类型的回归,但是在某些情况下,需要调整输出值和其他统计值。LINEST 函数返回的 F 检验值与示例示例 1 - 斜率和 Y 轴截距

如果将示例复制到一个空白工作表中,可能会更容易理解该示例。1

2

3

4

5

6

7ABC

已知y已知x

10

94

52

73

公式公式结果

=LINEST(A2:A5,B2:B5,,FALSE)A7=2, B7=1

要点  在 Excel 桌面应用程序中,示例中的公式必须以数组公式输入。在将示例复制到空白工作表中后,请选中以公式单元格开始的单元格区域 A7:B7,按 F2,再按 Ctrl+Shift+Enter。如果公式不是以数组公式的形式输入,则返回单个结果值 2。

当以数组输入时,将返回斜率 2 和 y 轴截距 1。示例 2 - 简单线性回归

如果将示例复制到一个空白工作表中,可能会更容易理解该示例。1

2

3

4

5

6

7

8

9ABC

月份销售额

13100

24500

34400

45400

57500

68100

公式说明结果

=SUM(LINEST(B2:B7, A2:A7)*{9,1})估算九月份的销售额11000

通常,SUM({m,b}*{x,1}) 等于 mx + b,即给定 x 值的 y 的估计值。还可以使用 TREND 函数。示例 3 - 多重线性回归

假设有开发商正在考虑购买商业区里的一组小型办公楼。

开发商可以根据下列变量,采用多重线性回归的方法来估算给定地区内的办公楼的价值。变量代表

y办公楼的评估值

x1底层面积(平方英尺)

x2办公室的个数

x3入口个数

x4办公楼的使用年数

本示例假设在自变量(x1、x2、x3 和 x4)和因变量 (y) 之间存在线性关系。其中 y 是办公楼的价值。

开发商从 1,500 个可选的办公楼里随机选择了 11 个办公楼作为样本,得到下列数据。“半个入口”指的是运输专用入口。

如果将示例复制到一个空白工作表中,可能会更容易理解该示例。1

2

3

4

5

6

7

8

9

10

11

12

13

14ABCDE

底层面积 (x1)办公室的个数 (x2)入口个数 (x3)办公楼的使用年数 (x4)办公楼的评估值 (y)

23102220142,000

23332212144,000

235631.533151,000

23793243150,000

24022353139,000

24254223169,000

244821.599126,000

24712234142,900

24943323163,000

25174455169,000

25402322149,000

公式

=LINEST(E2:E12,A2:D12,TRUE,TRUE)

要点  在 Excel 桌面应用程序中,示例中的公式必须以数组公式输入。在将示例复制到空白工作表中后,请选中以公式单元格开始的单元格区域 A14:E18,按 F2,再按 Ctrl+Shift+Enter。如果公式不是以数组公式的形式输入,则返回单个结果值 -234.2371645。

当作为数组输入时,将返回下面的回归统计值,用该值可识别所需的统计值。

a4389ae8f0dfe01aae783d4bc5263170.png

将第 14 行的值代入多重回归公式 y = m1*x1 + m2*x2 + m3*x3 + m4*x4 + b 可得到:y = 27.64*x1 + 12,530*x2 + 2,553*x3 - 234.24*x4 + 52,318

现在,开发商用下面公式可得到办公楼的评估价值,其中面积为 2,500 平方英尺、3 个办公室、2 个入口,已使用 25 年:y = 27.64*2500 + 12530*3 + 2553*2 - 234.24*25 + 52318 = $158,261

或者,可将下表复制到为本示例创建的工作表的单元格 A21。底层面积 (X1)办公室的个数 (X2)入口个数 (X3)办公楼的使用年数 (X4)办公楼的评估值 (Y)

25003225=D14*A22 + C14*B22 + B14*C22 + A14*D22 + E14

也可以用 TREND 函数计算此值。示例 4 - 使用 F 和 R2 统计值

在上例中,判定系数 r2 为 0.99675(函数 LINEST 的输出单元格 A17 中的值),表明自变量与销售价格之间存在很强的相关性。可以通过 F 统计值来确定具有如此高的 r2 值的结果偶然发生的可能性。

假设事实上在变量间不存在相关性,但选用 11 个办公楼作为小样本进行统计分析却导致很强的相关性。术语“Alpha”表示得出这样的相关性结论错误的概率。

LINEST 函数输出中的 F 和 df 值可被用于评估偶然出现较高 F 值的可能性。F 可与发布的 F 分布表中的值进行比较,或者 Excel 中的 FDIST 函数可被用于计算偶然出现较高 F 值的概率。适当的 F 分布具有 v1 和 v2 自由度。如果 n 是数据点的个数且 const = TRUE 或被省略,那么 v1 = n – df – 1 且 v2 = df。(如果 const = FALSE,那么 v1 = n – df 且 v2 = df。)语法为 FDIST(F,v1,v2) 的 FDIST 函数将返回偶然出现较高 F 值的概率。在本例中,df = 6(单元格 B18)且 F = 459.753674(单元格 A18)。

假设 Alpha 值为 0.05,v1 = 11 – 6 – 1 = 4 且 v2 = 6,那么 F 的临界值为 4.53。由于 F = 459.753674 远大于 4.53,所以偶然出现高 F 值的可能性非常低。(因为,在 Alpha = 0.05 的情况下,当 F 超过临界值 4.53 时,known_y’s 和 known_x’s 之间没有关系这一假设不成立。)使用 Excel 中的 FDIST 函数可获得偶然出现高 F 值的概率。例如,FDIST(459.753674, 4, 6) = 1.37E-7,是一个极小的概率。于是可以断定,无论通过在表中查找 F 的临界值,还是使用 FDIST 函数,回归公式都可用于预测该区域中的办公楼的评估价值。请注意,使用在上一段中计算出的 v1 和 v2 的正确值是非常关键的。



推荐阅读
  • 题目:图像处理(HDU1828,计算周长并集,利用线段树与离散化技术进行扫描) ... [详细]
  • PHP 数组逆序排列方法及常用排序函数详解 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 在使用 `useSelector` 选择器时,发现分派操作后状态未能实时更新。这可能是由于 React 组件的渲染机制或 Redux 的状态管理问题导致的。建议检查 `useSelector` 的依赖项和 `dispatch` 的调用时机,确保状态变化能够正确触发组件重新渲染。此外,可以考虑使用 `useEffect` 钩子来监听状态变化,以确保及时更新。 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • JDK 1.8引入了多项并发新特性,显著提升了编程效率。本文重点探讨了LongAdder和StampedLock的特性和应用场景。此外,还介绍了在多线程环境中发生死锁时,如何通过jps命令进行诊断和排查,提供了详细的步骤和示例。这些改进不仅增强了系统的性能,还简化了开发者的调试工作。 ... [详细]
  • 刷题笔记:探索乘积小于K的子数组问题 ... [详细]
  • 本文详细探讨了OpenCV中人脸检测算法的实现原理与代码结构。通过分析核心函数和关键步骤,揭示了OpenCV如何高效地进行人脸检测。文章不仅提供了代码示例,还深入解释了算法背后的数学模型和优化技巧,为开发者提供了全面的理解和实用的参考。 ... [详细]
  • 本周课程涵盖了高精度计算、前缀和及差分技术。在高精度计算部分,我们将探讨如何处理任意进制的数值运算,包括但不限于正数的加法、减法和乘法。通过调整基数,可以灵活应对不同进制的需求。前缀和与差分技术则主要用于高效解决数组和区间查询问题,提升算法性能。 ... [详细]
  • 在CodeIgniter框架中集成新库文件的过程中,我遇到了一些困惑。具体来说,在跟随nettuts的认证教程时,对于在Welcome控制器中添加的构造函数代码,特别是关于Session的验证部分,我感到不太理解。这部分内容涉及如何确保Session已经初始化并具备相应的功能,这对于实现用户认证至关重要。为了更好地掌握这一知识点,我计划深入研究CodeIgniter的官方文档,并参考更多相关资源,以确保能够正确地集成和使用新库文件。 ... [详细]
  • Java SE 文件操作类详解与应用
    ### Java SE 文件操作类详解与应用#### 1. File 类##### 1.1 File 类概述File 类是 Java SE 中用于表示文件和目录路径名的对象。它提供了丰富的方法来操作文件和目录,包括创建、删除、重命名文件,以及获取文件属性和信息。通过 File 类,开发者可以轻松地进行文件系统操作,如检查文件是否存在、读取文件内容、列出目录下的文件等。此外,File 类还支持跨平台操作,确保在不同操作系统中的一致性。 ... [详细]
  • 技术分享:深入解析GestureDetector手势识别机制
    技术分享:深入解析GestureDetector手势识别机制 ... [详细]
  • 如何使用和示例代码解析 org.semanticweb.owlapi.model.OWLSubPropertyChainOfAxiom.getPropertyChain() 方法 ... [详细]
author-avatar
手机用户2702938100
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有