MATLAB predict函数的结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB predict函数的结果相关的知识,希望对你有一定的参考价值。
刚在使用MATLAB2013b做时间序列时报错:
clc, clear
a=[15.2 15.9 18.7 22.4 26.9 28.3 30.5
33.8 40.4 50.7 58 66.7 81.2 83.4];
a=a'; a=a(:); a=a'; %把原始数据按照时间顺序展开成一个行向量
Rt=tiedrank(a) %求原始时间序列的秩
n=length(a); t=1:n;
Qs=1-6/(n*(n^2-1))*sum((t-Rt).^2) %计算Qs的值
t=Qs*sqrt(n-2)/sqrt(1-Qs^2) %计算T统计量的值
t_0=tinv(0.975,n-2) %计算上alpha/2分位数
b=diff(a) %求原始时间序列的一阶差分
m=ar(b,2,'ls') %利用最小二乘法估计模型的参数
bhat=predict(m,[b'; 0],1) %1步预测,样本数据必须为列向量,要预测1个值,b后要加1个任意数,1步预测数据使用到t-1步的数据
ahat=[a(1),a+bhat1'] %求原始数据的预测值,并计算t=15的预测值
delta=abs((ahat(1:end-1)-a)./a) %计算原始数据预测的相对误差
xlswrite('yu.xls',ahat), xlswrite('yu.xls',delta,'Sheet1','A3') %数据写到Excel文件中,方便word中做表格贴入数据
错误:
Cell contents reference from a non-cell array object.
Error in anli15_1 (line 13)
ahat=[a(1),a+bhat1'] %求原始数据的预测值,并计算t=15的预测值
此时工作空间显示的bhat为14*1 double
0
0.1950
1.2651
2.9715
3.8182
3.5093
1.5832
2.4442
4.1258
7.4439
9.1731
7.4835
10.0694
10.6640
之后使用MATLAB2010a再运行该程序,发现正常运行,工作空间中bhat为<1*1>cell,且bhat1的值如下,可以看出前两个值也不相同
0.7000
2.8000
1.2651
2.9715
3.8182
3.5093
1.5832
2.4442
4.1258
7.4439
9.1731
7.4835
10.0694
10.6640
太奇怪了,MATLAB此处的算法改动为何如此之大?哪位高人能解释下,另外如果我用MATLAB2013b的新算法怎样才能算出和2010a一样的正确结果呢?先谢过了啊
源码 13 行
ahat=[a(1),a+bhat1\'];修改成:
ahat=[a(1),a+bhat(1)\'];因为这里 predict 返回的不是 cell 结构~
已经这么试过了,但是因为bhat1和bhat(1)的值不同,所以结果不一样啊
参考技术A 请问这个问题你解决了吗?我这最后出来的预测和原始数据一样 参考技术B 重新操作 一下 这种状况。。。R语言DALEX包的explain函数生成指定分类预测机器学习模型解释器predict_parts函数基于breakdown方法分析对于指定的某一条样本(实例观察)每个变量对于预测结果的贡献大小
R语言使用DALEX包的explain函数生成指定分类预测机器学习模型的解释器、predict_parts函数基于breakdown方法分析对于指定的某一条样本(实例、观察)、每个变量对于预测结果的贡献以及哪些变量(因子)的贡献更大
目录
以上是关于MATLAB predict函数的结果的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB SVM:使用相同的数据集进行训练和测试会产生不同的结果
R语言DALEX包的explain函数生成指定分类预测机器学习模型解释器predict_parts函数基于breakdown方法分析对于指定的某一条样本(实例观察)每个变量对于预测结果的贡献大小