| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数学建模——基于 最小二乘法 的 回归分析 →预测问题(工具:matlab,线性回归和非线性回归通用) -> 正文阅读 |
|
[数据结构与算法]数学建模——基于 最小二乘法 的 回归分析 →预测问题(工具:matlab,线性回归和非线性回归通用) |
文章目录我尽量用通俗的语言来描述。 虽然这道题是 非线性回归 的问题,但其 做题步骤、做题思想 和 线性回归 是相似的,也可作参考。 一、最小二乘法是什么???最小二乘法(又称最小平方法)是一种数学优化技术。它通过 最小化误差的平方 和寻找数据的最佳函数匹配。 ??利用最小二乘法可以简便地求得 未知 的数据,并使得这些求得的 数据与实际数据 之间 误差的平方和 为最小 。 ??曲线拟合 可用最小二乘法来进行进行 参数估计 (即用来估计斜率k和截距b)。最小二乘法也可用于其他 优化问题。 二、非线性回归是什么???非线性回归是回归函数关于未知回归系数具有 非线性结构 的回归。常用的处理方法有回归函数的线性迭代法、分段回归法、迭代最小二乘法等。非线性回归分析的主要内容与线性回归分析相似。 三、最小二乘法 和 回归分析 之间有什么关系??? “ 最小二乘法 ” 只是 回归分析 中的一种方法,同样地,和最小二乘法相对应的还有:最小绝对值法 等。 三、样例及做题过程
第一步:问题的分析??要预测2010年该地区的房价,首先必须要找到一个年份与房价之间的函数表达式,使其能够比较好的 “贴近” 这些样本数据点,并且达到误差最小。 ??要实现这一点,我们首先要确定使用怎样的一个函数。 ??为了找到这样一个函数,我们先用最简单的函数试一下,即线性函数或二次函数。利用MATLAB的数据拟合功能,分别对数据点进行线性和二次拟合,在这里我们只是想 直观地 看一看,用线性或者二次函数能不能较好第 “贴近” 这些数据点。
运行结果如下: ??从上图中可以直观地看出,房价和时间(年份)的关系更加接近于一个二次函数、由此分析,我们应该为此建立一个二次函数的回归模型。 第二步:模型的建立??我们所要建立的二次函数的回归模型,应该能够使得函数能够 “最好的” 表现房价y 和 年份x 的关系。而什么才算 “最好的” 的呢? 这个时候,就用上 最小二乘法 了。其 核心思想 就是,让 函数上的值 与 实际值 之间的差别最小。 ??在建立数学模型之前,首先要明确一下变量:y 是指房屋的价格, x 是指时间(年份),而 y ^ \hat y y^? 是由函数 y ^ ( x ) \hat y(x) y^?(x) 所确定的房价y的 估计值 。 ??即设: y ^ ( x ) \hat y(x) y^?(x) = a0 + a1x + a2x2 ??并找到合适的参数 a0 、 a1 、 a2 ??达到最小值。 第三步:模型的求解??这一步相当于要求我们找到三个参数来求 y ^ ( x ) \hat y(x) y^?(x) ,并要求使得 上面的(1)式 达到最小。由于 y ^ ( x ) \hat y(x) y^?(x) = a0 + a1x + a2x2 ,其中 x 和 y 的数据都已知。则具体步骤如下: --------------------------分割线----------------------------
??用matlab来求解这个方程组。 ??写一个有助于理解的方程【配合代码看】:
运行结果如下: ??a0 = 779.2418 结果图为:
??②b,bint 为 回归系数估计值 和 它们的置信区间 ??③r,rint 为 残差(向量) 及其 置信区间 ??④stats 是用于检验回归模型的统计量,有4个数值,第一个是拟合优度 R2,第二个是 对方程整体显著性检验 的 F检验 ,第三个是 p值,第四个是 误差方差的估计值 s 2 s^2 s2 。 整理运行结果后得到下面这张表: ??由上表可知,R2=0.9989 表示因变量y(房价)的99.89%可由模型确定,F值 远远超过 F检验的临界值,p 远小于 α,因而该回归模型从整体来看是可用的。 补充: F检验 、 p值 、误差方差s2 的原理详见文章最后的参考附录[2]、[3]、[4]。 --------------------------分割线---------------------------- ??并将 y = 2010 - 2007 = 13 带入此方程,得到2010年估计的房价
y
^
(
13
)
=
3887
(
元
)
\hat y(13)=3887(元)
y^?(13)=3887(元)。 注:如果这道题单纯的只是个 回归分析问题 ,那么做到这里就可以了。顶多再加一张 残差分析图 ,利用 matlab 的函数 rcoplot(r,rint) 即可。如下图所示,最后再加一点文字分析即可。 第四步:结果的分析及验证(额外)注:因为这是 预测问题 ,所以还要继续做下去。 ??为了分析该结果的 合理性 和 准确性 ,我们还应该考虑这样的问题:如果说房价与年份之间有这么一个不为人知的 但是具有 “确定性” 的函数关系
y
=
y
(
x
)
y= y(x)
y=y(x) ,而得到的函数
y
=
y
^
(
x
)
y=\hat y(x)
y=y^?(x) 和它之间肯定具有一定的误差。我们不妨将此误差设为
ε
ε
ε ,则我么能得到一个关系式如下: ?? 经过整理后,我们得到下表:
?? 手算后解得:
μ
^
≈
0
\hat μ≈0
μ^?≈0,
σ
^
=
102
\hat σ=102
σ^=102。
?? 对于 ε ε ε 的概率分布图,我们希望找到一个 ε ε ε 的阈值 ε ′ ε' ε′ ,使得当 ∣ ε ∣ ≤ ε ′ |ε|≤ε' ∣ε∣≤ε′ 时, P ( ∣ ε ∣ ≤ ε ′ ) ≥ 0.7 P(|ε|≤ε')≥0.7 P(∣ε∣≤ε′)≥0.7 。这样做的目的是,我们希望得到一个房价区间,使2010年的 真实房价 落在这个区间的内的概率比较大(这里的 “比较大” 就是指取的 0.7 )。 ?? 由概率论可知,正态分布曲线是对称的。则由 P ( ε ≥ ε ′ ) = 1 2 × [ 1 ? P ( ∣ ε ∣ ≤ ε ′ ) ] = 0.15 P(ε≥ε')=\frac {1}{2} \times [1-P(|ε|≤ε')]=0.15 P(ε≥ε′)=21?×[1?P(∣ε∣≤ε′)]=0.15 ,可得 P ( ε ≤ ε ′ ) = 1 ? P ( ε ≥ ε ′ ) = 0.85 P(ε≤ε')=1-P(ε≥ε')=0.85 P(ε≤ε′)=1?P(ε≥ε′)=0.85 。而 P ( ε ≤ ε ′ ) = Φ ( ε ′ ? 0 102 ) P(ε≤ε')=Φ( \frac {ε'-0}{102}) P(ε≤ε′)=Φ(102ε′?0?)。 ??查表 得出 Φ ( 1.04 ) = 0.85 Φ( 1.04) =0.85 Φ(1.04)=0.85,所以我们得到 ε ε ε 的阈值 ε ′ ε' ε′ 约为 100 (元)。【注:100 是由 ε ′ ? 0 102 = 1.04 \frac {ε'-0}{102}=1.04 102ε′?0?=1.04 解得到的】 ??综上所述,我们用 最小二乘法 的出 y ^ ( x ) \hat y(x) y^?(x) 的表达式,并用此来预测了2010年的房价,同时分析了 y ^ ( x ) \hat y(x) y^?(x) 和 y ( x ) y(x) y(x) 的误差 ε ε ε ,并得出结论: ??在 70%的精确度 下,2010年的房价应该在 3887±100 元之内。 四、总结:??第一步:问题的分析(画散点图) ??第二步:模型的建立(直观地找出适合的回归函数) ??第三步:模型的求解(最小二乘法回归+检验+分析) ??第四步:结果的分析及验证(额外内容,预测问题就要多做这一步) ??最后,我没有详细地阐述其原理,只阐述了有什么用、怎么用。如要了解详细的原理,可以看看文章最后的 参考附录 吧。 五、参考附录:[1] 《数学建模——区分“拟合、插值、多元线性回归、逻辑回归、逐步回归、最小二乘法”等概念【概念篇】》 [2] 《F检验》 [3] 《P值》 [4] 《如何用stata求误差方差 s2 的估计值》 看追问的那条回复即可 [5] 《最小二乘法多元线性回归_使用Matlab解决多元线性回归问题》这里面有教如何清理异常数据 [6] 《数学建模之数据拟合(3):最小二乘法》看完这个视频,你可以 更友好地理解 最小二乘法 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 10:21:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |