利用MATLAB进行回归分析
- 格式:pdf
- 大小:545.63 KB
- 文档页数:19
使用Matlab技术进行回归分析的基本步骤回归分析是统计学中一种用于研究变量间关系的方法,可以用来预测和解释变量之间的相关性。
在实际应用中,使用计算工具进行回归分析可以提高分析效率和准确性。
本文将介绍使用Matlab技术进行回归分析的基本步骤,并探讨其中的一些关键概念和技巧。
一、数据准备在进行回归分析之前,首先需要收集和整理相关的数据。
这些数据通常包括自变量和因变量。
自变量是用来解释或预测因变量的变量,而因变量是需要解释或预测的变量。
在Matlab中,可以将数据保存为数据矩阵,其中每一列代表一个变量。
二、模型建立在回归分析中,需要建立一个数学模型来描述自变量和因变量之间的关系。
最简单的线性回归模型可以表示为:Y = βX + ε,其中Y是因变量,X是自变量,β是回归系数,ε是误差项。
在Matlab中,可以使用regress函数来进行线性回归分析。
三、模型拟合模型拟合是回归分析的核心步骤,它的目标是找到最佳的回归系数,使得预测值与实际观测值之间的差异最小。
在Matlab中,可以使用OLS(Ordinary Least Squares)方法来进行最小二乘法回归分析。
该方法通过最小化残差平方和来估计回归系数。
四、模型诊断模型诊断是回归分析中非常重要的一步,它可以帮助我们评估模型的合理性和有效性。
在Matlab中,可以使用多种诊断方法来检验回归模型是否满足统计假设,例如残差分析、方差分析和假设检验等。
这些诊断方法可以帮助我们检测模型是否存在多重共线性、异方差性和离群值等问题。
五、模型应用完成模型拟合和诊断之后,我们可以使用回归模型进行一些实际应用。
例如,可以使用模型进行因变量的预测,或者对自变量的影响进行解释和分析。
在Matlab中,可以使用该模型计算新的观测值和预测值,并进行相关性分析。
六、模型改进回归分析并不是一次性的过程,我们经常需要不断改进模型以提高预测的准确性和解释的可靠性。
在Matlab中,可以使用变量选择算法和模型改进技术来优化回归模型。
利用matlab中的函数进行线性回归分析本文系作者学习资料整理,如有不正确的地方,欢迎大家指正!在matlab中regress()函数和polyfit()函数都可以进行回归分析。
(1)regress()函数主要用于线性回归,一元以及多元的。
它可以提供更多的信息,残差之类的。
(2)polyfit()函数是利用多项式拟合。
可以是线性也可以是非线性的。
regress()函数详解[b,bint,r,rint,stats]=regress(y,X,alpha)说明:b是线性方程的系数估计值,并且第一值表示常数,第二个值表示回归系数。
bint 是系数估计值的置信度为95%的置信区间,r表示残差,rint表示各残差的置信区间,stats 是用于检验回归模型的统计量,有三个数值其中有表示回归的R2统计量和F以及显著性概率P值,alpha为置信度。
相关系数r^2越大,说明回归方程越显著;与F对应的概率P<alpha时候拒绝H0,回归模型成立。
y表示一个n-1的矩阵,是因变量的值,X是n-p矩阵,自变量x和一列具有相同行数,值是1的矩阵的组合。
如:对含常数项的一元回归模型,可将X变为n-2矩阵,其中第一列全为1。
ONES(SIZE(A)) is the same size as A and all ones。
利用它实现X=[ones(size(x))x](2)polyfit()函数详解-------------摘自sina小雪儿博客p=polyfit(x,y,n)[p,s]= polyfit(x,y,n)说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。
x必须是单调的。
矩阵s用于生成预测值的误差估计。
(见下一函数polyval)多项式曲线求值函数:polyval( )调用格式:y=polyval(p,x)[y,DELTA]=polyval(p,x,s)说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。
在MATLAB中进行分类和回归分析在科学和工程领域,分类和回归分析是常见的数据分析方法。
而MATLAB作为一种功能强大的数据分析软件,提供了丰富的工具和函数,使得分类和回归分析变得更加简单和高效。
本文将介绍在MATLAB中进行分类和回归分析的方法和技巧,帮助读者更好地理解和应用这些技术。
一、背景介绍分类和回归分析是基于已知数据的模式进行预测和分类的统计方法。
分类分析用于将数据分为不同的类别,而回归分析则试图通过已知数据的模式预测未知数据的数值。
这些方法在各个领域都有广泛的应用,如金融、医疗、市场营销等。
二、数据准备在进行分类和回归分析之前,需要准备好相应的数据。
一般来说,数据应当包含自变量(也称为特征或输入)和因变量(也称为标签或输出)。
自变量是用来作为预测或分类的输入变量,而因变量是要预测或分类的目标变量。
通常情况下,数据应当是数值型的,如果包含分类变量,需要进行相应的编码或处理。
三、分类分析在MATLAB中进行分类分析,有多种方法和技术可供选择。
其中最常见的方法包括K最近邻算法(K-nearest neighbors)和支持向量机(Support Vector Machines)等。
这些方法都有相应的函数,可以用于在MATLAB中实现分类分析。
K最近邻算法基于训练样本和测试样本之间的距离,将测试样本分类为与其最近的K个训练样本所属的类别。
而支持向量机则试图找到一个超平面,将不同类别的样本分开,并使得分类误差最小化。
在MATLAB中,我们可以使用fitcknn和fitcsvm函数来实现K最近邻算法和支持向量机。
除了上述方法,还有其他的分类算法可以在MATLAB中使用,如决策树、随机森林等。
根据数据的具体情况和需求,选择适合的分类算法非常重要。
四、回归分析在进行回归分析时,我们需要首先选择适当的回归模型。
常用的回归模型包括线性回归、多项式回归、岭回归等。
根据数据的分布和特点,选择合适的回归模型能够提高分析的准确性。
利用Matlab进行线性回归分析回归分析是处理两个及两个以上变量间线性依存关系的统计方法;可以通过软件Matlab实现;1.利用Matlab软件实现在Matlab中,可以直接调用命令实现回归分析,1b,bint,r,rint,stats=regressy,x,其中b是回归方程中的参数估计值,bint是b的置信区间,r和rint分别表示残差及残差对应的置信区间;stats 包含三个数字,分别是相关系数,F统计量及对应的概率p值;2recplotr,rint作残差分析图;3rstoolx,y一种交互式方式的句柄命令;以下通过具体的例子来说明;例现有多个样本的因变量和自变量的数据,下面我们利用Matlab,通过回归分析建立两者之间的回归方程;% 一元回归分析x=1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 2003 2435 2625 2948 3, 55 3372;%自变量序列数据y=698 872 988 807 738 1025 1316 1539 1561 1765 1762 1960 1902 2013 2446 2736 2825;%因变量序列数据X=onessizex',x',pauseb,bint,r,rint,stats=regressy',X,,pause%调用一元回归分析函数rcoplotr,rint%画出在置信度区间下误差分布;% 多元回归分析% 输入各种自变量数据x1= 8 3 3 8 9 4 5 6 5 8 6 4 7';x2=31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 7040 50 62 59'; x3=10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9';x4=8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11';%输入因变量数据y= 160 155 195';X=onessizex1,x1,x2,x3,x4;b,bint,r,rint,stats=regressy,X%回归分析Q=r'rsigma=Q/18rcoplotr,rint;%逐步回归X1=x1,x2,x3,x4;stepwiseX1,y,1,2,3%逐步回归% X2=onessizex1,x2,x3;% X3=onessizex1,x1,x2,x3;% X4=onessizex1,x2,x3,x4;% b1,b1int,r1,r1int,stats1=regressy,X2% b2,b2int,r2,r2int,stats2=regressy,X3;% b3,b3int,r3,r3int,stats3=regressy,X4;。
MATLAB回归分析回归分析是统计学中常用的一种方法,用于建立一个依赖于自变量(独立变量)的因变量(依赖变量)的关系模型。
在MATLAB环境下,回归分析可以实现简单线性回归、多元线性回归以及非线性回归等。
简单线性回归是一种最简单的回归分析方法,它假设自变量和因变量之间存在线性关系。
在MATLAB中,可以通过`polyfit`函数进行简单线性回归分析。
该函数可以拟合一元数据点集和一维多项式,返回回归系数和截距。
例如:```matlabx=[1,2,3,4,5];y=[2,3,4,5,6];p = polyfit(x, y, 1);slope = p(1);intercept = p(2);```上述代码中,`x`是自变量的数据点,`y`是因变量的数据点。
函数`polyfit`的第三个参数指定了回归的阶数,这里是1,即一次线性回归。
返回的`p(1)`和`p(2)`分别是回归系数和截距。
返回的`p`可以通过`polyval`函数进行预测。
例如:```matlabx_new = 6;y_pred = polyval(p, x_new);```多元线性回归是在有多个自变量的情况下进行的回归分析。
在MATLAB中,可以使用`fitlm`函数进行多元线性回归分析。
例如:```matlabx1=[1,2,3,4,5];x2=[2,4,6,8,10];y=[2,5,7,8,10];X=[x1',x2'];model = fitlm(X, y);coefficients = model.Coefficients.Estimate;```上述代码中,`x1`和`x2`是两个自变量的数据点,`y`是因变量的数据点。
通过将两个自变量放在`X`矩阵中,可以利用`fitlm`函数进行多元线性回归分析。
返回值`model`是回归模型对象,可以通过`model.Coefficients.Estimate`获得回归系数。
如何使用Matlab进行逻辑回归分析I. 前言逻辑回归是一种常用的统计分析方法,可以用于预测二分类问题。
在实际应用中,我们经常需要对某一变量取值为两个类别中的一个进行预测,例如判断一个人是否患有某种疾病、预测客户是否会购买某一产品等。
而Matlab作为一种功能强大的数学软件,提供了丰富的工具和函数,方便进行逻辑回归分析。
II. 数据准备在进行逻辑回归分析前,我们首先需要准备好所需的数据。
通常我们会有一组自变量和相应的因变量,自变量可以是多个,而因变量则是一个二分类变量。
III. 数据导入与预处理在Matlab中,可以使用函数`readtable`将数据从文件中导入。
导入后,我们可以使用`summary`函数对数据进行初步的观察,了解数据的统计特征。
接下来,我们需要对数据进行预处理,主要包括缺失值处理、异常值处理和特征缩放等。
IV. 模型建立与评估使用Matlab进行逻辑回归分析,可以使用内置的函数`fitglm`来建立逻辑回归模型。
`fitglm`函数可以根据输入的训练数据集和自变量进行模型训练,并返回一个LogisticRegression模型对象。
然后,我们可以使用`predict`函数对新的样本进行预测。
将数据集分为训练集和测试集,并使用训练集进行模型训练,随后使用测试集评估模型的性能。
在训练过程中,我们可以使用交叉验证方法来选择最好的模型参数,以避免过度拟合。
Matlab提供了`crossvalind`函数来帮助进行交叉验证。
在模型评估方面,常用的指标包括准确率、精确率、召回率和F1值等。
可以使用`confusionmat`函数来计算混淆矩阵,并从混淆矩阵中计算出这些指标。
V. 结果可视化与解释为了更好地理解模型的性能,我们可以使用Matlab提供的绘图函数对结果进行可视化。
例如,可以使用ROC曲线和AUC值来评估模型的二分类性能。
此外,还可以绘制变量的系数图,以了解各个自变量对因变量的影响程度。
Matlab中的回归分析与时间序列预测引言:在现代数据分析中,回归分析和时间序列预测是两个重要且广泛应用的领域。
Matlab作为一款功能强大的数学软件,在回归分析和时间序列预测方面提供了丰富的工具和函数,使得实现这些分析变得更加简单和高效。
本文将介绍Matlab中回归分析和时间序列预测的相关知识和方法,并结合实例进行说明。
一、回归分析回归分析是通过寻找自变量与因变量之间的关系,来推测未来观测值的一种分析方法。
在Matlab中,可以通过使用regress函数进行回归分析。
该函数可以拟合线性回归模型,并返回各个回归系数的估计值以及回归模型的统计信息。
下面我们以一个简单的例子来说明如何使用Matlab进行回归分析。
实例1:房价预测假设我们有一组数据,其中包含了房屋的面积和对应的售价。
我们希望通过房屋的面积来预测未来房价。
首先,我们需要导入数据并进行预处理。
```matlabdata = load('house_data.csv'); % 导入数据X = data(:, 1); % 提取面积作为自变量y = data(:, 2); % 提取房价作为因变量```接下来,我们可以使用regress函数进行回归分析,并得到回归系数的估计值。
```matlab[B, BINT, R, RINT, STATS] = regress(y, [ones(size(X)) X]); % 回归分析```其中,B为回归系数的估计值,BINT为回归系数的置信区间,R为残差,RINT为残差的置信区间,STATS为回归模型的统计信息。
我们可以打印出回归系数的估计值,以及回归模型的统计信息。
```matlabdisp('回归系数的估计值:');disp(B);disp('回归模型的统计信息:');disp(STATS);```运行以上代码,我们可以得到回归模型的结果。
通过回归系数的估计值,我们可以得到回归方程为y = B(1) + B(2) * X,其中B(1)为截距,B(2)为斜率。
Matlab技术回归分析方法简介:回归分析是一种常用的数据分析方法,用于建立变量之间的关系模型。
Matlab是一种功能强大的数值计算软件,提供了丰富的函数和工具包,用于实现回归分析。
本文将介绍几种常见的Matlab技术回归分析方法,并探讨其应用场景和优缺点。
一、线性回归分析:线性回归分析是回归分析的经典方法之一,用于研究变量之间的线性关系。
在Matlab中,可以使用`fitlm`函数来实现线性回归分析。
该函数通过最小二乘法拟合出最优的线性模型,并提供了各种统计指标和图形展示功能。
线性回归分析的应用场景广泛,例如预测销售额、研究市场需求等。
然而,线性回归假设自变量和因变量之间存在线性关系,当数据呈现非线性关系时,线性回归会失效。
为了解决非线性关系的问题,Matlab提供了多种非线性回归分析方法,如多项式回归、指数回归等。
二、多项式回归分析:多项式回归分析是一种常见的非线性回归方法,用于建立多项式模型来描述变量之间的关系。
在Matlab中,可以使用`fitlm`函数中的`polyfit`选项来实现多项式回归分析。
多项式回归在处理非线性关系时具有很好的灵活性。
通过选择不同的多项式次数,可以适应不同程度的非线性关系。
然而,多项式回归容易过拟合,导致模型过于复杂,对新数据的拟合效果不佳。
为了解决过拟合问题,Matlab提供了正则化技术,如岭回归和Lasso回归,可以有效控制模型复杂度。
三、岭回归分析:岭回归是一种正则化技术,通过添加L2正则项来控制模型的复杂度。
在Matlab中,可以使用`fitlm`函数的`Regularization`选项来实现岭回归分析。
岭回归通过限制系数的大小,减少模型的方差,并改善模型的拟合效果。
然而,岭回归不能自动选择最优的正则化参数,需要通过交叉验证等方法进行调优。
四、Lasso回归分析:Lasso回归是另一种常用的正则化技术,通过添加L1正则项来控制模型的复杂度。
在Matlab中,可以使用`fitlm`函数的`Regularization`选项来实现Lasso回归分析。
Matlab中的回归分析技术实践引言回归分析是统计学中常用的一种分析方法,用于研究因变量和一个或多个自变量之间的关系。
Matlab是一种强大的数值计算软件,具有丰富的统计分析工具和函数。
通过Matlab中的回归分析技术,我们可以深入理解数据背后的规律,并预测未来的趋势。
本文将介绍Matlab中常用的回归分析方法和技巧,并通过实例演示其实践应用。
一、简单线性回归分析简单线性回归是回归分析的最基本形式,用于研究一个自变量和一个因变量之间的线性关系。
在Matlab中,可以使用`fitlm`函数进行简单线性回归分析。
以下是一个示例代码:```Matlabx = [1, 2, 3, 4, 5]';y = [2, 4, 6, 8, 10]';lm = fitlm(x, y);```这段代码中,我们定义了两个向量x和y作为自变量和因变量的观测值。
使用`fitlm`函数可以得到一个线性回归模型lm。
通过这个模型,我们可以获取回归系数、拟合优度、显著性检验等信息。
二、多元线性回归分析多元线性回归分析允许我们研究多个自变量与一个因变量的关系。
在Matlab中,可以使用`fitlm`函数进行多元线性回归分析。
以下是一个示例代码:```Matlabx1 = [1, 2, 3, 4, 5]';x2 = [0, 1, 0, 1, 0]';y = [2, 4, 6, 8, 10]';X = [ones(size(x1)), x1, x2];lm = fitlm(X, y);```这段代码中,我们定义了两个自变量x1和x2,以及一个因变量y的观测值。
通过将常数项和自变量组合成一个设计矩阵X,使用`fitlm`函数可以得到一个多元线性回归模型lm。
通过这个模型,我们可以获取回归系数、拟合优度、显著性检验等信息。
三、非线性回归分析在实际问题中,很多情况下变量之间的关系并不是线性的。
非线性回归分析可以更准确地建模非线性关系。
利用MATLAB进行回归分析一、实验目的:1.了解回归分析的基本原理,掌握MATLAB实现的方法;2. 练习用回归分析解决实际问题。
二、实验内容:题目1社会学家认为犯罪与收入低、失业及人口规模有关,对20个城市的犯罪率y(每10万人中犯罪的人数)与年收入低于5000美元家庭的百分比1x、失业率2x和人口总数3x(千人)进行了调查,结果如下表。
(1)若1x~3x中至多只许选择2个变量,最好的模型是什么?(2)包含3个自变量的模型比上面的模型好吗?确定最终模型。
(3)对最终模型观察残差,有无异常点,若有,剔除后如何。
理论分析与程序设计:为了能够有一个较直观的认识,我们可以先分别作出犯罪率y与年收入低于5000美元家庭的百分比1x、失业率2x和人口总数x(千人)之间关系的散点图,根据大致分布粗略估计各因素造3成的影响大小,再通过逐步回归法确定应该选择哪几个自变量作为模型。
编写程序如下:clc;clear all;y=[11.2 13.4 40.7 5.3 24.8 12.7 20.9 35.7 8.7 9.6 14.5 26.9 15.736.2 18.1 28.9 14.9 25.8 21.7 25.7];%犯罪率(人/十万人)x1=[16.5 20.5 26.3 16.5 19.2 16.5 20.2 21.3 17.2 14.3 18.1 23.1 19.124.7 18.6 24.9 17.9 22.4 20.2 16.9];%低收入家庭百分比x2=[6.2 6.4 9.3 5.3 7.3 5.9 6.4 7.6 4.9 6.4 6.0 7.4 5.8 8.6 6.5 8.36.7 8.6 8.4 6.7];%失业率x3=[587 643 635 692 1248 643 1964 1531 713 749 7895 762 2793 741 625 854 716 921 595 3353];%总人口数(千人)figure(1),plot(x1,y,'*');figure(2),plot(x2,y,'*');figure(3),plot(x3,y,'*');X1=[x1',x2',x3'];stepwise(X1,y)运行结果与结论:犯罪率与低收入散点图犯罪率与失业率散点图犯罪率与人口总数散点图低收入与失业率作为自变量低收入与人口总数作为自变量失业率与人口总数作为自变量在图中可以明显看出前两图的线性程度很好,而第三个图的线性程度较差,从这个角度来说我们应该以失业率和低收入为自变量建立模型。
并且我们也可以从相关性角度来选取自变量,可以看出低收入与失业率作为自变量时的RMSE=4.64848;低收入与人口总数作为自变量时的RMSE=5.62245;失业率与人口总数作为自变量时的RMSE=5.04083。
我们看到当低收入与失业率作为自变量时RMSE 最小,因此如果选择两个变量作为自变量的会,它们是最适合的。
并且可以得到三者的关系为:1234.0725 1.22393 4.39894y x x =-++;对同时选取三个自变量的模型分析:如果我们将其三者同时选为自变量,我们发现RMSE=4.58978,比低收入与失业率二者作为自变量时稍微小了一点,不过我们也发现此时的X3系数为0.00076937,几乎为零,是可以忽略的,因此我们仍然选取两个自变量做最终的模型。
关系函数仍为:1234.0725 1.22393 4.39894y x x =-++低收入、失业率与人口总数都作为自变量残差分析:对我们设定的最终模型运用残差分析,编写程序如下:clc;clear all;y=[11.2 13.4 40.7 5.3 24.8 12.7 20.9 35.7 8.7 9.6 14.5 26.9 15.736.2 18.1 28.9 14.9 25.8 21.7 25.7];%犯罪率(人/十万人)x1=[16.5 20.5 26.3 16.5 19.2 16.5 20.2 21.3 17.2 14.3 18.1 23.1 19.124.7 18.6 24.9 17.9 22.4 20.2 16.9];%低收入家庭百分比x2=[6.2 6.4 9.3 5.3 7.3 5.9 6.4 7.6 4.9 6.4 6.0 7.4 5.8 8.6 6.5 8.36.7 8.6 8.4 6.7];%失业率x3=[587 643 635 692 1248 643 1964 1531 713 749 7895 762 2793 741 625 854 716 921 595 3353];%总人口数(千人)n=20;X2=[ones(n,1),x1',x2'];[b,bint,r,rint,s]=regress(y',X2);rcoplot(r,rint)运行结果如下:我们应该剔除第18、20组数据,剔除后,运行源程序得到新的结果如下:这时我们在重复本题开始时的做法,就可以得到最终的关系函数了。
剔除不符数据后再次运行程序得到结果那么最终的函数关系便为:1235.7095 1.60228 3.39259y x x =-++简要分析:从最终得到的结果上来看,失业率与低收入都将导致犯罪的上升。
通过本道例题让我们学会运用逐步回归命令stepwise 来分析多自变量情况下的最优模型问题,得到最优模型后,我们再运用残差法找到不符的数据,将其剔除,这样我们就会得到一个比较科学准确的关系式,这个思路对我们分析回归问题很有效。
题目2一家洗衣粉制造公司新产品实验时,关心洗衣粉泡沫的高度y 与搅拌程度X1和洗衣粉用量X2之间的关系,其中搅拌程度从弱到强分为3表12.30(1)将搅拌程度X1作为普通变量,建立y与X1和X2的回归模型,从残差图上发现问题。
(2)将搅拌程度X1视为没有定量关系的3个水平,用0-1变量表示,建立回归模型,与(1)比较,从残差图上还能发现什么问题。
(3)加入搅拌程度与洗衣粉用量的交互项,看看模型有无改进。
理论分析与程序设计:仿照题目1中的程序,我们对搅拌程度(当成普通变量)与洗衣粉用量建立回归模型,并且进行残差分析。
编写程序如下:clc;clear all;y=[28.1 32.3 34.8 38.2 43.5 65.3 67.7 69.4 72.2 76.9 82.2 85.3 88.190.7 93.6];%洗衣粉泡沫高度x1=[1 1 1 1 1 2 2 2 2 2 3 3 3 3 3];%搅拌程度x2=[6 7 8 9 10 6 7 8 9 10 6 7 8 9 10];%洗衣粉用量figure(1),plot(x1,y,'*');figure(2),plot(x2,y,'*');X1=[x1',x2'];stepwise(X1,y)运行结果如下:搅拌程度与泡沫高度关系洗衣粉用量与泡沫高度的关系我们还可以得到选取不同的变量时RMSE 的大小,为了让RMSE 最小,我们根据“Next step ”的提示,最后得到如下结果:从上图中可以看出当含有x1、x2两项时RMSE 最小,因此该模型建立为:1212.7426.3 3.08667y x x =-++编写程序进行残差分析:clc; clear all ;y=[28.1 32.3 34.8 38.2 43.5 65.3 67.7 69.4 72.2 76.9 82.2 85.3 88.1 90.7 93.6];%洗衣粉泡沫高度x1=[1 1 1 1 1 2 2 2 2 2 3 3 3 3 3]; %搅拌程度x2=[6 7 8 9 10 6 7 8 9 10 6 7 8 9 10]; %洗衣粉用量figure(1),plot(x1,y,'*'); figure(2),plot(x2,y,'*'); X1=[x1',x2']; stepwise(X1,y) n=15;X2=[ones(n,1),x1',x2'];[b,bint,r,rint,s]=regress(y',X2); rcoplot(r,rint)我们得到如下结果:说明中等搅拌程度的残差与其他不同。
将搅拌程度用0-1表示,泡沫高度关系分析:我们不妨设x0与x1共同表示搅拌程度,当(x0,x1)=(0,0)时,代表搅拌程度为1;当(x0,x1)=(0,1)时,代表搅拌程度为2;当(x0,x1)=(1,0)时,代表搅拌程度为3,我们就可以编写如下程序:clc;clear all;y=[28.1 32.3 34.8 38.2 43.5 65.3 67.7 69.4 72.2 76.9 82.2 85.3 88.190.7 93.6];%洗衣粉泡沫高度x0=[0 0 0 0 0 0 0 0 0 0 1 1 1 1 1];x1=[0 0 0 0 0 1 1 1 1 1 0 0 0 0 0];%搅拌程度x2=[6 7 8 9 10 6 7 8 9 10 6 7 8 9 10];%洗衣粉用量figure(1),plot(x0,y,'*');figure(2),plot(x1,y,'*');figure(3),plot(x2,y,'*');X1=[x0',x1',x2'];stepwise(X1,y)n=15;X2=[ones(n,1),x0',x1',x2'];[b,bint,r,rint,s]=regress(y',X2); rcoplot(r,rint)运行结果与分析:Y与x1关系散点图Y与x2关系散点图Y与x3关系散点图将搅拌程度改为0-1后的运行结果可以看出当RMSE 最小时含有x0、x1、x2项,此时的函数关系式为:01210.686752.634.92 3.08667y x x x =+++接下来我们看一下残差分析结果:我们发现第5组数据应该剔除,剔除后再次运行程序,得到如下结果:而这时回归结果显示:这时的函数关系为:01211.6653.18435.504 2.892y x x x =+++将交互项考虑进来分析:改写程序如下:clc;clear all;y=[28.1 32.3 34.8 38.2 43.5 65.3 67.7 69.4 72.2 76.9 82.2 85.3 88.190.7 93.6];%洗衣粉泡沫高度x1=[1 1 1 1 1 2 2 2 2 2 3 3 3 3 3];%搅拌程度x2=[6 7 8 9 10 6 7 8 9 10 6 7 8 9 10];%洗衣粉用量figure(1),plot(x1,y,'*');figure(2),plot(x2,y,'*');X1=[x1',x2',(x1.*x2)'];stepwise(X1,y)n=15;X2=[ones(n,1),x1',x2',(x1.*x2)'];[b,bint,r,rint,s]=regress(y',X2);rcoplot(r,rint)clc;clear all;y=[28.1 32.3 34.8 38.2 43.5 65.3 67.7 69.4 72.2 76.9 82.2 85.3 88.190.7 93.6];%洗衣粉泡沫高度x0=[0 0 0 0 0 0 0 0 0 0 1 1 1 1 1];x1=[0 0 0 0 0 1 1 1 1 1 0 0 0 0 0];%搅拌程度x2=[6 7 8 9 10 6 7 8 9 10 6 7 8 9 10];%洗衣粉用量figure(1),plot(x0,y,'*');figure(2),plot(x1,y,'*');figure(3),plot(x2,y,'*');X1=[x0',x1',x2' ,(x1.*x2)',(x1.*x0)',(x0.*x2)'];stepwise(X1,y)n=15;X2=[ones(n,1),x0',x1',x2' ,(x1.*x2)',(x1.*x0)',(x0.*x2)'];[b,bint,r,rint,s]=regress(y',X2);rcoplot(r,rint)运行程序:将搅拌程度为普通变量的运行结果将搅拌程度改为0-1后的运行结果我们发现对于把搅拌程度当做普通变量时交互项没有对函数起到改进的作用,函数仍为:1212.7426.3 3.08667y x x =-++但当把搅拌程度作为0-1表示时,交互项会改进函数,新函数为0121*212.366752.8839.4833 2.841670.601667y x x x x x =+++-简要分析:其实做这种题的思路都是相同的,只不过由于数据之间的复杂关系,让我们得到结论的难易程度不一。