笔者做过国赛也做过美赛,其中一类典型问题就是分析相关性,从而进行预测或者其他操作。这类问题通常情况下属于比较常规的问题,一般通过matlab或SPSS分析相关性,得到一个较好的数值即可。

然而有的时候不论取哪两个或者哪几个变量,相关性都弱得令人发指,以至于无法昧着良心继续煞有介事地絮叨他们之间的相关性,这个时候,如果变量较多,可以考虑广义相加模型,实质是分析因变量与多个自变量之间的相关性。目前国内网站只有R语言实现,在此笔者将为大家补充Python对GAM的实现。

以2020年MCM的problem a为例,鱼群的分布,或者说某一时间某一地点鱼的种群数量和纬度/经度/水温其实都没有特别强的相关性,甚至可以说很弱,那么这个时候,如果还想通过其他变量预测2070年鱼群的分布便不能用简单的相关。

在一篇1997年的文献《Trends in abundance and geographic distribution of North Sea herring in relation to environmental factors》中,作者Christos D. Maravelias为我们提供的这一思路非常值得借鉴。

Christos D. Maravelias认为可以通过对四种变量的分析对鱼群数量进行定性进而预测。

下面介绍一下这个模型。

GAM 广义相加模型 Generalized additive model

广义加性模型(GAM)是以下形式的平滑半参数模型:
g(E[y|X])=β0+f1(X1)+f2(X2,X3)+…+fM(XN)g(E[y|X])=β0+f1(X1)+f2(X2,X3)+…+fM(XN)
其中,自变量是因变量,是将我们的预测变量与因变量的期望值相关联的链接函数。X.T = [X_1, X_2, ..., X_N]yg()
特征函数f_i()是使用惩罚性B样条构建的,这使我们能够自动对非线性关系建模,而不必手动尝试对每个变量进行许多不同的转换。

GAM通过允许要素的非线性功能并同时保持可加性来扩展广义线性模型。由于模型是添加剂,它很容易检查每个效果X_iY分别同时举行的所有其他预测不变。
结果是一个非常灵活的模型,可以很容易地合并先验知识和控制过度拟合。

一般的广义加法模型

y∼ExponentialFamily(μ|X)y∼ExponentialFamily(μ|X)
g(μ|X)=β0+f1(X1)+f2(X2,X3)+…+fM(XN)g(μ|X)=β0+f1(X1)+f2(X2,X3)+…+fM(XN)
因此,我们可以看到GAM包含3个组成部分:distribution 来自指数族link function g(⋅)g(⋅)functional form 具有加法结构 β0+f1(X1)+f2(X2,X3)+…+fM(XN)

有了理论基础,计算不能靠手。

随后笔者找到了这个令人深刻的、强大的Python库——pygam

https://pygam.readthedocs.io/en/latest/?badge=latest​pygam.readthedocs.io

pygam具有

回归

微粒

等诸多功能。

我们利用所给的数据集结合实际问题得到了某一年鱼群密度和经纬度、温度的关系,从图中可以看出在鲱鱼的适宜温度密度最高,因此将预测鱼群密度的问题转化为预测温度的问题,从而结合对历年水温的ARIMA预测所得结果对2070年鱼群迁徙做出了判断。

本文主要意义在于介绍广义相加模型GAM和pygam这一优秀的Python实现,对问题的解答乃是抛砖引玉,水平有限,欢迎探讨。

广义典型相关分析_数学建模/机器学习:广义加性模型(GAM)及其Python实现相关推荐

  1. python 广义线性模型_数学建模/机器学习:广义加性模型(GAM)及其Python实现

    笔者做过国赛也做过美赛,其中一类典型问题就是分析相关性,从而进行预测或者其他操作.这类问题通常情况下属于比较常规的问题,一般通过matlab或SPSS分析相关性,得到一个较好的数值即可. 然而有的时候 ...

  2. Python用广义加性模型GAM进行时间序列分析

    每当你发现一个与时间对应的趋势时,你就会看到一个时间序列.我们围绕广义加性模型GAM技术进行一些咨询,帮助客户解决独特的业务问题.研究金融市场表现和天气预报的事实上的选择,时间序列是最普遍的分析技术之 ...

  3. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  4. R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function)

    R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function) 目录

  5. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  6. 广义典型相关分析_一文教你掌握广义估计方程

    广义估计方程是一种研究纵向数据(比如重复测量数据,面板数据)的方法. 同一测量对象的多次测量数据结果之间很可能有着相关关系,如果不考虑数据之间的相关性会造成信息损失.常见的研究模型(比如线性回归)都要 ...

  7. 数学建模优化模型简单例题_数学建模中简单的优化模型

    本文介绍较简单的优化模型,归结微积分中函数的机制问题,可以直接用微分法求解. 1. 存贮模型 工厂订购原料,出售商品,都需要确定贮存量. 1.1不允许缺货的存贮模型 经济批量订货公式(EOQ公式) 用 ...

  8. 广义典型相关分析_重复测量数据分析及结果详解(之二)——广义估计方程

    上一篇文章主要介绍了重复测量方差分析的基本思想是什么.它能做什么.怎么做.结果怎么解释,这几个问题.最后同时指出重复测量方差分析还是有一定局限,起码不够灵活.所以本文在上一篇文章基础上继续介绍医学重复 ...

  9. 数学建模优化模型简单例题_数学建模之常见的优化模型

    EverydayOneCat 肝ing 知识点 1.运输问题 前面线性规划文章中已经讲过经典的运输问题.这个例子只是一个补充,在考虑经济效益的基础上进行运输问题的研究. 建立模型: ai:第i个水库供 ...

最新文章

  1. 如何利用Seaborn绘制热力图?
  2. const int、const int *、int *cosnt、const int * const、const int 的区别
  3. 【笔记】docker核心概念和使用 docker命令
  4. 我们越来越浮躁的心靠什么去滋润
  5. java中不能定义为变量名称_Java,“变量名”不能解析为变量
  6. php ci框架 实例化类,php框架CI(codeigniter)自动加载与自主创建对象操作实例分析...
  7. RHEL6入门系列之二十六,利用rpm进行软件包管理
  8. How to proof Pi
  9. Linux命令工具 top详解
  10. CSS 画一条横线/竖线
  11. LBM学习记录4 Python实现D3Q19圆柱绕流
  12. Gentoo 软件包冲突
  13. CV之ModelScope:基于ModelScope框架的人脸人像数据集利用DCT-Net算法实现人像卡通化图文教程之详细攻略
  14. 伽卡他卡学生端找不到计算机,伽卡他卡学生端
  15. Super Point 笔记(二)
  16. IE浏览器设置默认显示版本
  17. PG中XLOG日志结构
  18. CDH安装Tez 0.8.5
  19. 【机器学习】手写数字识别学习笔记(对三篇文件进行分析记录)
  20. 3.3 初学者不能回避——《逆袭大学》连载

热门文章

  1. Python中使用random随机函数与Matplotlib库绘制随机漫步图
  2. java获取局域网内主机,java怎么获取局域网内所有主机ip
  3. 2021年SWPUACM暑假集训day1二分算法
  4. 比较大小教案计算机西瓜,比较大小小班教案
  5. 苦于E63没有秒表,网上找的不好用,就自己写个简单的
  6. 深入理解Java的分级引用模型
  7. poj 1164城堡问题(DFS)
  8. 使用Presto SQL一些常见问题总结
  9. 使用Hystrix守护应用(1)
  10. 新加坡大数据初创公司 Latize 获 150 万美元风险融资