我在统计建模中介绍一个非常受欢迎的主题; 多线性(或多变量)回归(MLR)或分类。在简单的例子中,我将向您展示MLR的用法。MLR已广泛用于科学(生物,制药,金融,医疗等)。

测量了五个人的体重指数。对于每个人,饮食评分,无论是男性还是女性以及是否年龄超过20,也记录在三栏中。不要问我饮食评分是多少以及如何测量它们,因为我不知道这只是一个玩具的例子。问题是:BMI与饮食评分,性别和年龄之间的关系是什么?如果我们有新人的饮食评分,性别和年龄,我们可以得到他/她的体重指数吗?MLR在这里回答这些问题。我们期望BMI和三个变量之间的关系是这样的:

基于此等式,为了预测具有已知饮食分数,性别和年龄的人的BMI值,您需要知道所有β的值。MLR找到所有缺失系数的值。我们称ß 0 偏见。在大多数实际应用中,具有大偏差意味着预测器(即三个变量)没有足够的预测能力并且具有小偏差是具有良好预测模型的良好信号。一个大的偏见可能意味着还有其他描述符可以解释我们尚未发现它们的观察结果。

让我们将上表中的BMI列显示为列矩阵并将其命名为Y,并将所有自变量的值命名为具有名称X的3 x 3矩阵,最后将β矩阵的值作为列矩阵b发现。 可以找到 未知矩阵b

b =(X'X)-1 X'Y

其中X” 是矩阵的转置X 和-1 返回矩阵的逆矩阵。

如果您想要偏见,则需要向矩阵X 添加新列。此新列应该是第一个,其所有行的值必须为1。

MLR的限制: MLR仅在X矩阵中的列数小于或等于行数时起作用。换句话说,描述符的数量不能超过观察的数量。另一个限制是关于上述等式中的逆运算。并非所有矩阵都具有逆矩阵,当我们无法得到X'X的逆 矩阵时,b矩阵的计算将失败,因此MLR将失败。 当MLR失败时,还有其他方法,如偏最小二乘法 或支持向量机,可以正常工作。

使用代码

我们只需要在另一篇文章中描述的所有矩阵运算方法之上实现单个方法,以便创建模型并找到b矩阵的值。

public Matrix calculate() throws NoSquareException {

if (bias)

this.X = X.insertColumnWithValue1();

checkDiemnsion();

Matrix Xtr = MatrixMathematics.transpose(X); //X'Matrix XXtr = MatrixMathematics.multiply(Xtr,X); //X'XMatrix inverse_of_XXtr = MatrixMathematics.inverse(XXtr); //(X'X)^-1if (inverse_of_XXtr == null) {

System.out.println("Matrix X'X does not have any inverse. So MLR failed to create the model for these data.");

return null;

}

Matrix XtrY = MatrixMathematics.multiply(Xtr,Y); //X'Yreturn MatrixMathematics.multiply(inverse_of_XXtr,XtrY); //(X'X)^-1 X'Y}

以上代码遵循以下步骤以获得b 矩阵:如果你想要偏差(即beta 0),那么在X 矩阵中添加一个新列

然后检查输入矩阵是否有效

然后找到X的转置 (即 X' )

再乘以X由X”

然后从步骤4中找到矩阵的逆矩阵; 即(XX')- 1

再乘以X” 的ÿ

最后,通过步骤6中的操作矩阵,将来自步骤5中的操作的矩阵相乘

现在让我们在上面的例子中测试方法:

Matrix X = new Matrix(new double[][]{{4,0,1},{7,1,1},{6,1,0},{2,0,0},{3,0,1}});

Matrix Y = new Matrix(new double[][]{{27},{29},{23},{20},{21}});

MultiLinear ml = new MultiLinear(X, Y);

Matrix beta = ml.calculate();

当我们使用带有两个参数的构造函数时,默认情况下bias的值为true。结果如下:

这是一个预测MSI具有所有自变量值(即饮食评分,性别和年龄)的模型。β的值的大小以及它们的符号表明它们的重要性。 在这个说明性的例子中,饮食评分和性别对BMI的贡献大于年龄,性别和饮食评分的影响相反; 即,饮食评分较高的人体内BMI较高,男性体内BMI显着低于女性。 有趣的是看到MLR对BMI观察的见解。

最后一个问题:这是一个好模型吗?我们可以做的最小化是使用模型(上面的等式)并预测BMI,然后将它们与观察值进行比较:

正如您所看到的那样,预测的那些距离观察到的并不那么远。您可以找到每种情况的误差(即预测 - 观察到的)并计算可以指示我们的模型准确度的均方误差(MSE)。MSE越低,模型越好。

java 一元线性回归_Java中的多元线性回归相关推荐

  1. python 多元线性回归_numpy - Python中的多元线性回归

    numpy - Python中的多元线性回归 我似乎无法找到任何进行多重回归的python库. 我发现的唯一的东西只做简单的回归. 我需要对几个自变量(x1,x2,x3等)回归我的因变量(y). 例如 ...

  2. python 线性回归_Python中的简化线性回归

    python 线性回归 In the area of Machine Learning, one of the first algorithms that someone can come acros ...

  3. 线性回归(二)---多元线性回归

    多元线性回归 一个因变量依赖两个或两个以上自变量变化而变化的回归模型称为多元线性回归● 一元线性回归: y(x)=theta0 + theta1* x 1● 多元线性回归: y(x)=theta0 + ...

  4. 多元线性回归的缺陷_多元线性回归常见问题

    0.多元线性回归 多元线性回归是统计学中经常用到回归方法,一般需满足一下六个条件: 随机误差项是一个期望值或平均值为0的随机变量: 对于解释变量的所有观测值,随机误差项有相同的方差: 随机误差项彼此不 ...

  5. 多元线性回归的缺陷_多元线性回归模型常见问题及解决方法概要.ppt

    多元线性回归模型常见问题及解决方法概要 多元线性回归模型 基本假设 (1)随机扰动项ui数学期望(均值)为零.E(ui)=0 (2)随机扰动项ui的同方差性且无自相关Var(ui)=σ2 (3)解释变 ...

  6. python多元线性回归实例_Python机器学习多元线性回归模型 | kTWO-个人博客

    前言 在上一篇文章<机器学习简单线性回归模型>中我们讲解分析了Python机器学习中单输入的线性回归模型,但是在实际生活中,我们遇到的问题都是多个条件决定的问题,在机器学习中我们称之为多元 ...

  7. java mod %区别_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  8. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  9. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  10. java 序列化实例_Java中的序列化与反序列化实例

    创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...

最新文章

  1. 遇到的浏览器兼容问题及应对方法
  2. 第七篇:循环神经网络
  3. 10.外观模式(Facade Pattern)
  4. 工作区 暂存区 版本库之间的关系
  5. YTU 2412: 帮警长数一数【循环、分支简单综合】
  6. Docker多步构建更小的Java镜像
  7. 【遥感数字图像处理】基础知识:第五章 遥感图像增强处理方法总结
  8. 从Wireshark看TCP连接的建立与关闭
  9. Linux环境下安装单实例MySQL 5.7
  10. linux系列的命令补充
  11. php 下载的文件损坏,php 文件下载 出现下载文件内容乱码损坏的解决方法
  12. android listview多视图嵌套多视图
  13. maven整合ssh框架笔记
  14. rtx客户端绿化方法+组织架构更新延迟的解决方案
  15. 文本溢出处理,出现省略号,单行文本溢出处理,多行文本溢出处理
  16. H3C交换机关闭STP生成树协议的方法
  17. ZUI易入门Android之Git的使用(一)本地仓库
  18. 私服 php,php私服发布站 代码
  19. 转:极速的关键——斯巴鲁车系四驱系统详解
  20. 多线程爬取NCBI数据库文献

热门文章

  1. Vuex getters 基础使用
  2. Android设备中直接通过shell操作GPIO或者上层c服务直接操作GPIO
  3. ASP.NET MVC中通过Request.IsAjaxRequest()来判断是否要加载公共视图
  4. 自己的包增加为第三方包,使用Eclipse环境报Unresolved import错误(pycharm可用正常引用)...
  5. 解决Oracle 11g在用EXP导出时,空表不能导出
  6. 设计模式14——行为型模式之职责链模式
  7. web安全day14:扫描与爆破
  8. 游戏筑基开发之回调函数(C语言)
  9. Ansible详解(八)——Ansible palybook变量
  10. Python3 实现来宾抽签