主题:求助拟合问题,请高手帮帮忙!
sky19
[专家分:0] 发布于 2007-06-14 21:51:00
实验可以得到一系列的x,y,z,p数据,如何得到p=f(x,y,z)的关系式,是否用拟合?请高手指点啊!
回复列表 (共9个回复)
沙发
Guassfans [专家分:4090] 发布于 2007-06-14 22:19:00
如果是多项式拟合的话一般是单变量,多变量较麻烦
如果确定了模型的话可用 lsqcurvefit函数做拟合,设计程序的话用的是最小二乘原理
如果模型未定,建议用回归:
探索P对X,Y,Z的关系,画离散图,其间可用拟合,确定为线性OR非线性模型,是否存在交互影响等.建立模型
线性用regress
非线性用nlinfit
板凳
sky19 [专家分:0] 发布于 2007-06-15 12:14:00
非常感谢Guassfans!
可以得到一系列的x,y,z,p数据,但是模型未知,现在就是求这个模型。
就是说可以用多元非线性回归做?
那么请推荐一下相关的多元非线性回归原理及Matlab实现的教程啊,再次感谢!
3 楼
gslyd [专家分:1300] 发布于 2007-06-15 15:28:00
将数据置上,可以试试!
4 楼
sky19 [专家分:0] 发布于 2007-06-15 17:06:00
xi=[-180 -90 0 90 180]
yj=[-160 -80 0 80 160]
zk=[10 110 210 310 410]
for k=1:5
for j=1:5
for i=1:5
p(xi,yj,zk)=
0.932 0.951 0.954 0.952 0.933
0.950 0.960 0.963 0.960 0.950
0.954 0.963 0.970 0.963 0.954
0.950 0.960 0.963 0.960 0.950
0.932 0.951 0.954 0.951 0.932
0.923 0.941 0.942 0.940 0.923
0.940 0.950 0.952 0.950 0.940
0.941 0.953 0.960 0.952 0.941
0.940 0.950 0.952 0.950 0.940
0.923 0.940 0.942 0.940 0.923
0.912 0.930 0.932 0.930 0.912
0.930 0.940 0.943 0.940 0.930
0.931 0.942 0.950 0.942 0.931
0.930 0.940 0.944 0.940 0.930
0.912 0.930 0.932 0.930 0.913
0.903 0.920 0.924 0.920 0.903
0.920 0.930 0.934 0.930 0.920
0.923 0.933 0.940 0.933 0.923
0.920 0.930 0.934 0.930 0.920
0.904 0.920 0.924 0.920 0.903
0.894 0.910 0.915 0.910 0.893
0.910 0.920 0.925 0.920 0.910
0.914 0.925 0.930 0.925 0.914
0.910 0.920 0.925 0.920 0.910
0.893 0.910 0.915 0.910 0.893
大致是这样的数据
5 楼
sky19 [专家分:0] 发布于 2007-06-15 21:34:00
x,y,z的取值范围很大,分别为(-180,180),(-160,160),(0,420),
这样的范围是否可以用非线性回归来建立模型?
请高手指点啊!
6 楼
Guassfans [专家分:4090] 发布于 2007-06-15 22:37:00
数据不要这样离散地表出
最好是用向量
X=[x;y;z]对应于P=[]
假设模型为:
P=a0+a1x1+a2x2+a3x3+a11x1^2+a22x^2+a33x^3+a12x1x2+a13x1x3+a23x2x3
xx=[ones(24,1) X(:,1) X(:,2) X(:,3) X(:,1).^2 X(:,2).^2 X(:,3).^2 X(:,1).*X(:,2) X(:,2).*X(:,3) X(:,1).*X(:,3) ];
[B,BINT,R,RINT,STATS] = regress(Y,xx)
求解得
参数估计值为:B
置信区间:BINT
模型分析:
若某参数对应置信区间含0,则可认为此参数对应变量项对P不显著,可以将之从模型中去掉,然后重新建立模型,同样的做法!
7 楼
gslyd [专家分:1300] 发布于 2007-06-16 00:36:00
p=0.97-9.876e-05*Z-5.3298e-07*X^2-6.5045e-07*Y^2
R^2=0.9879
Xi b df Up MS F
a 0.97
Z -9.876e-05 1 0.024384 0.024384 6525.8257
X^2 -5.3298e-07 1 0.0065232 0.0065232 1745.7988
Y^2 -6.5045e-07 1 0.0060653 0.0060653 1623.2461
Error 121 0.00045212 3.7365e-006
Total 124 0.037424
8 楼
sky19 [专家分:0] 发布于 2007-06-16 11:46:00
感谢Guassfans和gslyd的帮助!
如果我再增加元数,即X=[x;y;z;u;v;w],那么假设模型是否会很复杂?因为建立的模型是用于预测的,所以回归方法得到的精度会怎样?
另外,对下面的这一组数据看不太懂:
Xi b df Up MS F
a 0.97
Z -9.876e-05 1 0.024384 0.024384 6525.8257
X^2 -5.3298e-07 1 0.0065232 0.0065232 1745.7988
Y^2 -6.5045e-07 1 0.0060653 0.0060653 1623.2461
Error 121 0.00045212 3.7365e-006
Total 124 0.037424
能否解释一下,或者给予程序?或者请推荐一下相关的多元非线性回归原理及Matlab实现的教程。
再次感谢大家的帮助!
9 楼
gslyd [专家分:1300] 发布于 2007-06-16 13:52:00
当自变数增加时,回归模型的预测精度肯定会提高,即R^2增加。
如6楼所示进行目标变数依各自变数的回归分析,当考虑的自变数(项)增加时,需对各自变数(项)对回归作用的显著性进行测验,将不显著的自变数项剔除,保留显著的自变数项。你所看不太懂的一些数据(文字)就是最终的测验结果,df是自由度,Up是偏回归平方和,MS指方差:F=MS*/MSe。
我来回复