罗兰在MATLAB的艺术

把想法变成MATLAB

2012年发布一个新的回归功能

本周理查德·威利从技术博客营销将客人对新回归功能航运与12统计工具箱释放。

内容

12个统计工具箱包括新功能的释放

  • 线性回归
  • 非线性回归
  • 逻辑回归(和其他类型的广义线性模型)

这些回归技术不新统计工具箱。新是MathWorks添加一组广泛的支持功能,简化等常用分析任务策划,异常值检测,生成预测,进行逐步回金宝app归,应用鲁棒回归……

我们将从一个简单的例子开始使用线性回归。

创建一个数据集

我要生成一个基本数据集X和Y之间的关系是由一条直线(Y = mX + B)和添加一些正态分布的噪声。接下来,我将生成一个散点图显示X和Y之间的关系

清晰的所有clc rng (1998);X = linspace(1100年,50);X = X ';7 * Y = X + 50 + 30 * randn (50, 1);New_X = 100 *兰德(10,1);散射(X, Y,“。”)

使用线性回归模型Y的函数X

观察数据,我们可以看到一个清晰的X和Y之间的线性关系我将使用新的LinearModel函数模型Y的函数X这个函数的输出将被存储为对象命名“myFit”,这是显示在屏幕上。

myFit = LinearModel.fit (X, Y)
myFit =线性回归模型:y ~ 1 + x1估计系数:估计SE tStat pValue(拦截)e-08 x1 7.0154 0.14131 49.644 9.9714 51.6 8.2404 6.2618 6.4611 e-43观测数量:50,错误自由度:48根均方误差:29.1平方:0.981,调整平方0.98 f统计量与常数模型:2.46 e + 03,假定值= 6.46 e-43

第一行显示了线性回归模型。当执行一个回归我们需要指定一个模型,描述变量之间的关系。默认情况下,LinearModel假定你想模型的关系作为一个直线的截距项。表达" y ~ 1 + x1”描述了这个模型。正式,这个表达式转换为“Y是建模为一个线性函数,其中包括一个拦截和一个变量”。再次注意,我们代表的模型形成Y = mX + B…

下一个块的文本包含估计系数,以及基本信息的可靠性估计。

最后,我们基本信息包括r平方拟合优度,调整r平方和均方误差。

使用myFit进行分析

前面,我提到过新的回归函数包括各种各样的支持功能,不同的分析任务自动化。金宝app让我们看一些。

首先,允许生成一个图,我们可以使用它来评估结果符合的质量。我们将通过应用MATLAB绘图命令“myFit”的标准。

情节(myFit)

注意,这个简单的命令创建一个丰富的信息包括情节

  • 散点图的原始数据集
  • 一行显示我们的健康
  • 合适的置信区间

MATLAB也自动贴上我们的轴和添加一个传奇。

残差中寻找规律

或者,让我们假设我们想知道是否有残差模式。(残差的明显的模式可能表明,我们的模型是简单,它未能捕捉真正的工作趋势数据集。这种技术也可以用来检查和噪音是否组件是恒定的整个数据集)。

在这里,我将通过“myFit”新“plotResiduals”方法,告诉plotResiduals残差与拟合值的阴谋。

图plotResiduals (myFit,“安装”)

我的情节看起来随机噪声——在本例中是一个非常好的事情。

寻找在残差自相关

自相关的数据集的质量也可以摆脱我的健康。下面的命令将修改剩余的阴谋策划残差与滞后剩余工资。

图plotResiduals (myFit,“落后”)

寻找离群值

假设我想检查离群值……我们也有一个阴谋。

图plotDiagnostics (myFit,“cookd”)

库克的距离是一个指标,常用数据集是否包含任何离群值。对于任何给定的数据点,库克的距离是通过执行一个全新的回归计算,不包括数据点。库克的距离措施多少曲线的形状变化两者之间。如果大量的曲线移动,数据点对模型有很大的影响,很可能是一个例外。

  • 红色的十字架显示库克的距离数据集内的每个点。
  • 水平线显示平均库克的距离“三倍的所有的点数据集”。数据点的库克的距离大于三次均值通常被认为是可能的异常值。

在这个例子中,非我们的数据点看起来好像他们是离群值。

使用生成的预测模型

最后,但并非最不重要,让我们假设我们想使用我们的预测模型。这是应用“预测”方法一样简单。

预测=预测(myFit New_X)
预测= 310.51 596.17 64.866 490.79 306.06 308.87 621.55 366.15 543.32 317.33

发现所有的方法与回归对象可用

我希望你同意所有这些建立在情节和分析例程代表显著改善可用性。然而,如果你和我一样,你的第一反应是“太好了,您已经构建了许多好东西,但是,你希望我如何了解呢?”

现在我想做的就是给你一些简单的技巧,您可以使用它们来发现所有的新cabilities我们补充道。第一个技巧是承认“myFit”是一个对象,对象具有与其相关联的方法。所有的命令,我们起诉到目前为止像“阴谋”,“plotResiduals”,“预测”方法LinearModel对象。

任何时候,我使用一个内置的对象与MATLAB第一船情节的全套检查船的对象的方法。这是容易(myFit)在命令行输入方法。我可以使用这个立即发现所有船的建造能力的对象。如果这些选项之一,吸引了我的目光,我可以使用帮助系统来获取更多的信息。

方法(myFit)
方法类LinearModel: addTerms情节plotSlice方差分析plotAdded预测coefCI plotAdjustedResponse随机coefTest plotDiagnostics removeTerms disp plotEffects一步dwt plotInteraction函数宏指令plotResiduals静态方法:适合逐步

发现信息包含在回归的全套对象

这是另一个很有用的技巧,了解新的回归对象。您可以使用MATLAB变量编辑器来遍历对象的所有信息。

你应该有一个对象命名为“myFit”在MATLAB的工作区。双击对象将打开对象的变量编辑器。

公式

在开始这个博客有一些简要介绍“公式”。我想结束这个演讲公式通过提供更多信息。回归分析要求能够指定一个模型,描述你的预测和响应变量之间的关系。

让我们改变我们最初的例子中,我们使用高阶多项式,而不是一条直线。我也要改变这种从曲线拟合问题表面拟合问题。

X1 = 100 * randn (100 1);X2 = 100 *兰德(100 1);X = (X1, X2);Y = 3 * X1。^ 2 + 5 * X1。* X2 + 7 * X2。^ 2 + 9 * X1 + 11 * X2 + 30 + 100 * randn (100 1);myFit2 = LinearModel.fit (X, Y)
myFit2 =线性回归模型:y ~ 1 + x1 + x2估计系数:估计SE tStat pValue(拦截)25771 11230 x2 x1 178.75 54.95 3.253 - 0.0015717 2.2949 - 0.023893 613.39 - 187.2 3.2767 - 0.0014579的观测数量:100年,错误自由度:97根均方误差:5.42 e + 04平方:0.211,调整平方0.195 f统计量与常数模型:13日,假定值= 1.03 e-05

让我们看看这个例子的输出。我们可以看到,几乎立刻,我们出了毛病。

  • R ^ 2的值是相当糟糕
  • 回归系数都远远达不到我们创建时指定的数据集

如果我们看看线描述线性回归模型我们可以看到哪里出了问题。默认情况下,LinearModel适合飞机数据集。在这里,X和Y之间的关系描述为一个高阶多项式。我们需要这些额外的信息传递给“LinearModel”。

建模一个高阶多项式(选项1)

这里有一些不同的方法,我可以使用LinearModel模型高阶多项式。第一个选项是手工写出公式。

myFit2 = LinearModel.fit (X, Y,y ~ 1 + x1 ^ 2 + x2 ^ 2 + x1, x2 + x1 + x2 ')
myFit2 =线性回归模型:y ~ 1 x1 ^ 2 + x2 + x1 * x2 + ^ 2估计系数:估计SE tStat pValue x1(拦截)32.317 38.071 0.84886 0.39811 9.1735 0.2119 43.291 6.9346 e - 64 x2 12.19 1.6568 7.3577 6.9388 e-11 x1, x2 4.9985 0.0033943 1472.6 7.0691 e - 207 x1 ^ 2 2.9992 0.0006268 4785 5.5265 e - 255 x2 ^ 2 6.9849 0.015281 457.11 3.9814 e - 159数量的观察:100年,错误自由度:94根均方误差:101平方:1,调整平方1 f统计量与常数模型:7.02 e + 06,假定值= 3.23 e - 260

建模一个高阶多项式(选项2)

或者,我可以简单的用字符串“poly22”来表示一个二阶多项式对X1和X2自动生成所有适当的条款和交叉项。

myFit2 = LinearModel。fit (X, Y,“poly22”)
myFit2 =线性回归模型:y ~ 1 x1 ^ 2 + x1 * x2 + x2 + ^ 2估计系数:估计SE tStat pValue x1(拦截)32.317 38.071 0.84886 0.39811 9.1735 0.2119 43.291 6.9346 e - 64 x2 12.19 1.6568 7.3577 6.9388 e-11 x1 ^ 2 2.9992 - 0.0006268 4785 5.5265 e - 255 x1, x2 4.9985 0.0033943 1472.6 7.0691 e - 207 x2 ^ 2 6.9849 0.015281 457.11 3.9814 e - 159数量的观察:100年,错误自由度:94根均方误差:101平方:1,调整平方1 f统计量与常数模型:7.02 e + 06,假定值= 3.23 e - 260

非线性回归:生成我们的数据

让我们考虑一个非线性回归的例子。这一次,我们将使用一个罪恶曲线。罪恶的方程曲线是由四个关键参数。

  1. 这个阶段
  2. 振幅
  3. 垂直的转变
  4. 的相移

我们将首先生成一个数据集

X = linspace(0, 6 *π,90);X = X ';Y = 10 + 3 * (sin (X + 1 * 5)) + 2 * randn (90 1);

非线性回归:生成一个合适的

接下来,我们将使用NonLinearModel函数进行非线性回归。在这里我们需要

  1. 指定公式描述X和Y之间的关系
  2. 为解决优化提供一些合理的起始条件
myFit3 = NonLinearModel.fit (X, Y,“y ~ b0 + b1 *罪(b2 * x + b3) ',11日,2.5,1.1,5.5)
myFit3 =非线性回归模型:y ~ b0 + b1 *罪(b2 * x + b3)估计系数:估计SE tStat pValue b0 e - 143 9.0543 9.9751 0.02469 404.02 2.9629 0.033784 87.703 6.4929 e - 86 b2 0.99787 b1 b3 e - 147 0.0021908 455.47 3.029 5.0141 0.023119 216.88 1.4749 e - 119数量的观察:90年,错误自由度:86根均方误差:0.227平方:0.989,调整平方0.989 f统计量与常数模型:2.58 e + 03,假定值= 4.36 e - 84

非线性回归:处理由此产生的模型

再一次回归分析的输出是一个对象,我们可以用于分析。例如:

图散射(X, Y)情节(X, myFit3.Fitted,“r”)

非线性回归:指定替代方式回归模型

最后一点要注意:我一直使用的语法来指定回归模型是基于“威尔金森的符号”。这是一个标准的语法中常用的统计数据。如果你喜欢,你也可以选择使用匿名函数来指定您的模型。

例如,命令可以写成

myFit4 = NonLinearModel。fit (X, Y, @ (b, X) (b b(1) +(2) *罪(b (3) * X + b (4))), [11, 2.5, 1.1, 5.5])
myFit4 =非线性回归模型:y ~ (b1和b2 * sin (b3 * x + b4))估计系数:估计SE tStat pValue b1 9.9751 0.02469 404.02 9.0543 e - 143 b2 2.9629 0.033784 87.703 6.4929 0.99787 e - 86 b3 b4 e - 147 0.0021908 455.47 3.029 5.0141 0.023119 216.88 1.4749 e - 119数量的观察:90年,错误自由度:86根均方误差:0.227平方:0.989,调整平方0.989 f统计量与常数模型:2.58 e + 03,假定值= 4.36 e - 84

结论

我一直在使用统计工具箱接近五年了。除了数据集的引入阵列几年前,什么都没有了我那么兴奋的释放这些新的回归功能。所以,看起来合适的最后一个例子,结合数据集数组和新的回归对象。

告诉我你认为下面的例子。(如果你可以额外学分在表达“哑变量”)

负载carsmallds =数据集(MPG、重量);ds。年=序数(Model_Year);mdl = LinearModel.fit (ds,“MPG ~年+重量^ 2”)
mdl =线性回归模型:MPG ~体重重量1 + +年+ ^ 2估计系数:估计SE tStat pValue(拦截)e-19重量-0.016404 0.0031249 -5.2493 2.6648 54.206 4.7117 11.505 1.0283 e-06 Year_76 Year_82 0.0044137 2.0887 0.71491 2.9215 8.1864 0.81531 10.041 1.5573 2.6364 e-16体重^ 2 e-06 4.9454 e-07 3.149 - 0.0022303的观察:94年,错误自由度:89根均方误差:2.78平方:0.885,调整平方0.88 f统计量与常数模型:172年,假定值= 5.52 e-41

把你的答案在这里




使用MATLAB®7.14发表

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。