关于matlab,如何简化拟合的函数模型
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 23:11:20
关于matlab,如何简化拟合的函数模型
我是用回归分析的方法研究各种影响因素(变量)对试验指标(因变量)的影响,寻求使试验指标达到最优的各影响因素的数值解,现在虽然求出了目标函数取得极值的x1、x2、x3、x4的解,但是根据实践经验和理论是不可能达到这个极大值的,所以我想是不是我拟合的函数模型不符合实际(尽管相关系数很高),下面附上求拟合求系数的代码,大侠帮我看下,我选的函数模型能不能简化啊,如何才能选出符合实际的函数模型,我导师要求我做的结论能指导实际工程,如果要简化,该怎么简化?如何删除对试验结果不相干的项?显著水平分析?之前用spss分析过了,采用逐步回归的方法,显著性水平设置成0.05,之后所有的因素都被剔除了,该怎么办啊?
x=[13 17 7 11 21 5 19 15 23 9;3.5 2 1 3 4.5 5 5.5 2.5 1.5 4;14.5 2.5 11.5 5.5 13 8.5 4 10 7 1;8 16 12 20 18 14 10 2 6 4]';%变量
y=[157.83 50.35 39.2 52.6 656.5 67.85 37.48 50.51 69.49 46.52]';%实测值
x1=x(:,1);
x2=x(:,2);
x3=x(:,3);
x4=x(:,4);
fx1=@(beta,x)beta(15)+beta(1)*(x1'*x2)+beta(2)*(x1'*x3)+beta(3)*(x1'*x4)+...
+beta(4)*(x2'*x3)+beta(5)*(x2'*x4)+...
beta(6)*(x3'*x4)+beta(7)*x1+beta(8)*x2+...
beta(9)*x3+beta(10)*x4+beta(11)*(x1.^2)+beta(12)*(x2.^2)+beta(13)*(x3.^2)+beta(14)*(x4.^2);
beta0=[zeros(1,15)]';%模型
[beta,R,J]=nlinfit(x,y,fx1,beta0)
y14=fx1(beta,x);%预测值
y=[157.83;50.35;39.2;52.6;656.5;67.85;37.48;50.51;69.49;46.52];
RSS=(y-y14)'*(y-y14)
SSy=var(y)*9
rsquare=(SSy-RSS)/SSy%相关系数
求极值采用的是fmincon求解,fmincon的算法是subspace trust region(信赖域反射法),求极值和算法关系大吗?其他算法怎么求解
我是用回归分析的方法研究各种影响因素(变量)对试验指标(因变量)的影响,寻求使试验指标达到最优的各影响因素的数值解,现在虽然求出了目标函数取得极值的x1、x2、x3、x4的解,但是根据实践经验和理论是不可能达到这个极大值的,所以我想是不是我拟合的函数模型不符合实际(尽管相关系数很高),下面附上求拟合求系数的代码,大侠帮我看下,我选的函数模型能不能简化啊,如何才能选出符合实际的函数模型,我导师要求我做的结论能指导实际工程,如果要简化,该怎么简化?如何删除对试验结果不相干的项?显著水平分析?之前用spss分析过了,采用逐步回归的方法,显著性水平设置成0.05,之后所有的因素都被剔除了,该怎么办啊?
x=[13 17 7 11 21 5 19 15 23 9;3.5 2 1 3 4.5 5 5.5 2.5 1.5 4;14.5 2.5 11.5 5.5 13 8.5 4 10 7 1;8 16 12 20 18 14 10 2 6 4]';%变量
y=[157.83 50.35 39.2 52.6 656.5 67.85 37.48 50.51 69.49 46.52]';%实测值
x1=x(:,1);
x2=x(:,2);
x3=x(:,3);
x4=x(:,4);
fx1=@(beta,x)beta(15)+beta(1)*(x1'*x2)+beta(2)*(x1'*x3)+beta(3)*(x1'*x4)+...
+beta(4)*(x2'*x3)+beta(5)*(x2'*x4)+...
beta(6)*(x3'*x4)+beta(7)*x1+beta(8)*x2+...
beta(9)*x3+beta(10)*x4+beta(11)*(x1.^2)+beta(12)*(x2.^2)+beta(13)*(x3.^2)+beta(14)*(x4.^2);
beta0=[zeros(1,15)]';%模型
[beta,R,J]=nlinfit(x,y,fx1,beta0)
y14=fx1(beta,x);%预测值
y=[157.83;50.35;39.2;52.6;656.5;67.85;37.48;50.51;69.49;46.52];
RSS=(y-y14)'*(y-y14)
SSy=var(y)*9
rsquare=(SSy-RSS)/SSy%相关系数
求极值采用的是fmincon求解,fmincon的算法是subspace trust region(信赖域反射法),求极值和算法关系大吗?其他算法怎么求解
可以用这个拟合函数
fx1=@(beta,x)beta(1)*(x1).^2.*(x2).^2+beta(2)*(x3).^2.*(x4).^2+beta(3)*(x1).^2.*x(3).^2+beta(4)*(x2).^2.*x(4).^2+beta(5)*(x1).*(x2)+...
beta(6)*(x2).*(x3)+beta(7)*(x3).*(x4)+beta(8)*(x4).*(x1);
R_square=0.995500238543972 %相关系数 比你的拟合函数的增加了0.0212
再问: 为什么你的函数关系式中交叉项x1*x3是x1.*x3这么表示,而我的是x1'*x3,这两种表达方式我都计算了,算出的相关程度不一样,交叉项采用x1.*x3算出的相关程度高,这两种表达分别什么含义?x1’*x3是不是表示行向量x1乘以列向量x3啊(x1代表列向量)?那x1.*x3又代表什么呢?大侠说一下吧
再答: x1’*x3是矩阵运算,而x1.*x3是数组运算。因矩阵运算按线性变换定义,而数组运算接对应元素运算定义。只有当进行加、减、数乘运算时两者结果是一样的,而进行乘、除、乘方时就不一样了。实际上矩阵是一个特殊形式的数组。
再答: 所以按矩阵形式计算与数组计算是有误差的,对于matlab,其大部分命令都是基于数组的概念来使用的。
fx1=@(beta,x)beta(1)*(x1).^2.*(x2).^2+beta(2)*(x3).^2.*(x4).^2+beta(3)*(x1).^2.*x(3).^2+beta(4)*(x2).^2.*x(4).^2+beta(5)*(x1).*(x2)+...
beta(6)*(x2).*(x3)+beta(7)*(x3).*(x4)+beta(8)*(x4).*(x1);
R_square=0.995500238543972 %相关系数 比你的拟合函数的增加了0.0212
再问: 为什么你的函数关系式中交叉项x1*x3是x1.*x3这么表示,而我的是x1'*x3,这两种表达方式我都计算了,算出的相关程度不一样,交叉项采用x1.*x3算出的相关程度高,这两种表达分别什么含义?x1’*x3是不是表示行向量x1乘以列向量x3啊(x1代表列向量)?那x1.*x3又代表什么呢?大侠说一下吧
再答: x1’*x3是矩阵运算,而x1.*x3是数组运算。因矩阵运算按线性变换定义,而数组运算接对应元素运算定义。只有当进行加、减、数乘运算时两者结果是一样的,而进行乘、除、乘方时就不一样了。实际上矩阵是一个特殊形式的数组。
再答: 所以按矩阵形式计算与数组计算是有误差的,对于matlab,其大部分命令都是基于数组的概念来使用的。