接下来,我们可以使用(或)和函数比较两个不同模型的结果,我们输入:
Compare2Models(Test3,3,4)
如果想要绘制曲面图可以输入:
Compare2ModelsSurf(Test3,3,4)
比较3个和4个组件模型 。同样地,比较4和5组件模型以及5和6、6和7组件模型 。从这些图来看,似乎至少需要四个组件 。
接下来,通过键入,比较4、5、6和7组件模型的载荷 :
PlotLoadings(Test3,4)PlotLoadings(Test3,5)PlotLoadings(Test3,6)PlotLoadings(Test3,7)
在这里,我们可以看到随着模型复杂性的增加,组件是如何演变的 。每个模型的组成部分通常非常相似,每一步,一个组成部分被分成两个,以便更好地建模数据,并消除残差中留下的系统可变性 。这是一个积极的结果,表明模型之间的一致性,而不是随机的局部极小值结果 。
文章插图
接下来,可以使用比较函数检查平方误差的谱和,我们输入:
CompareSpecSSE(Test3,3,4,5)
绘制了三种不同模型在激发和发射方向上的残差平方和 。还可以尝试比较4、5和6组件模型,最后比较5、6和7组件模型 。从这些结果来看,似乎很明显,从6到7组分模型的步骤对拟合的改善很小,这表明6个或更少的组分足以获得这些数据 。
第六步:拆半检验
在这一阶段的分析之后,我们已经识别并移除了可疑的异常样本,并发现为该数据建模所需的正确分量数量介于4到6个分量之间 。现在是时候尝试验证这些模型了 。
现在数据将被分成两半 。不只是进行一种类型的拆分,而是进行两种不同的拆分,每个拆分以不同的方式对数据进行拆分 。这使我们能够运行两个对半分析,并使用性能最好的一个 。有时,如果样本类型在两半之间分布不均,则拆分可能是次优的 。理想情况下,分割应尽可能“随机” 。下图显示了如何使用工具箱中的函数拆分数据 。
我们输入:
[AnalysisData]=SplitData(Test3);
可以从图中看到,所有的样本随机分配到四个组,第一半:(1-2);第二半:(3-4) 。进入命令窗口 。绘制了四张图,显示了激发和发射方向上每一半数据的平方值之和 。每对两半的曲线应该相似(1-2,3-4) 。
接下来,使用功能执行,我们输入:
[AnalysisData]=SplitHalfAnalysis(AnalysisData,(3:7),'MyData.mat');
进行分析 。这将使带有3到7个组件的模型与数据相匹配 。这一步需要10-20分钟,具体取决于计算机的速度 。
现在,可以使用函数检查分析结果(输入help 以获取解释) 。该函数使用( Seva和Berge,2006)描述的同余系数,在数学上比较在单独的数据分割上运行的模型的激励和发射载荷,并在命令窗口中说明模型是否得到验证 。此外,还绘制了每一半的发射和激发载荷,以便直观地进行比较,我们输入:
SplitHalfValidation(AnalysisData,'1-2',4)
SplitHalfValidation(AnalysisData,'3-4',4)
查看第一次拆分(1-2)时的三组件模型结果 。你会发现它是经过验证的 。现在尝试其他组件模型(3-7)和其他拆分(3-4) 。你会发现四个组件可以被分成两部分 。
- 三极管的3种工作状态
- 计算机大赛全国排名,计算机大赛:国内高校排名,清华第一,华中大第二,第三太意外?
- 白色情人节的来历
- 2023中秋国庆加班工资按三倍还是两倍算 2023年国庆中秋加班费怎么算
- 文艺复兴时期三位伟大的悲剧是
- 三唑醇常用于防治什么
- 三伏天晒太阳的好处与功效与作用
- 【JavaWeb】Java三层架构写一个登录案例
- 三种用python进行线性/非线性拟合的方法
- 三十三 算法数据结构----有序表