当前位置: 首页 > news >正文

机器学习 | 非线性回归拟合数据时的离群值检测

非线性回归是一种用于模拟变量之间复杂关系的强大工具。然而,离群值的存在可能会显着扭曲结果,导致参数估计不准确和预测不可靠。因此,检测离群值对于稳健的非线性回归分析至关重要。本文深入研究了在非线性回归中识别离群值的方法和技术,确保您获得可靠和准确的结果。

了解非线性回归

什么是非线性回归?

非线性回归是回归分析的一种形式,其中观测数据由模型参数的非线性组合函数建模,并取决于一个或多个自变量。与线性回归不同,它假设变量之间的直线关系,非线性回归可以模拟更复杂的关系。

离群值检测的重要性
离群值是指显著偏离数据总体模式的数据点。在非线性回归的背景下,离群值可能对模型产生不成比例的影响,导致有偏的参数估计和较差的预测性能。检测和适当处理离群值对于保持回归分析的完整性至关重要。

非线性回归中离群值的检测方法

1.目视检查

  • 散点图:散点图是直观检查数据是否存在潜在离群值的简单而有效的方法。通过绘制因变量与自变量的关系图,您可以确定与预期关系相差甚远的点。
  • 残差图:残差图显示相对于自变量或拟合值的残差(观测值和预测值之间的差异)。离群值通常表现为具有较大残差的点,这些点与其余数据显著偏离。

2.统计方法

  • 学生化残差:学生化残差是残差除以其标准差的估计值。它们遵循t分布,从而更容易识别离群值。具有大于特定阈值的学生化残差的点(例如,2或3)被认为是离群值。
  • Cook距离:Cook距离测量每个数据点对拟合值的影响。Cook距离大于特定阈值(通常为4/n,其中n为数据点数量)的点被视为有影响力和潜在离群值。
  • Hadi’s Potential:Hadi’s Potential是一种结合杠杆和残差来识别影响点的度量。它在非线性回归中特别有用,其中单独的杠杆可能不足以检测离群值。

3.鲁棒回归方法

  • 最小绝对偏差(LAD):最小绝对偏差最小化绝对残差之和,而不是残差平方之和。该方法对离群值不太敏感,并提供了普通最小二乘(OLS)回归的稳健替代方案。
  • M-估计:M-估计通过使用减少离群值影响的损失函数来推广最大似然估计。常用的M估计量包括Huber’s T和Tukey’s Bigweight。
  • 最小二乘(LTS):最小二乘回归最小化最小平方残差的总和,有效地忽略了可能由于离群值引起的最大残差。该方法在存在离群值的情况下提供稳健的参数估计。

非线性回归检测离群值:实例

步骤1: 导入相关模块库

import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.robust.robust_linear_model import RLM
from statsmodels.robust.norms import HuberT, LeastSquares
from sklearn.metrics import mean_squared_error

步骤2: 创建随机数据集

n = 100
x = np.linspace(0, 10, n)
y = 2.5 * np.sin(1.5 * x) + np.random.normal(0, 0.5, n)
# Adding some outliers
x_outliers = np.append(x, [1, 2, 3])
y_outliers = np.append(y, [10, -10, 12])
data = pd.DataFrame({'tumor_size': x_outliers, 'metastasis_fraction': y_outliers})

步骤3:使用普通最小二乘回归拟合非线性模型

# Adding a nonlinear term for the regression model
data['tumor_size_squared'] = data['tumor_size'] ** 2
ols_model = smf.ols('metastasis_fraction ~ tumor_size + tumor_size_squared', data=data).fit()

步骤4:可视化数据

plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
sns.scatterplot(x='tumor_size', y='metastasis_fraction', data=data)
plt.plot(data['tumor_size'], ols_model.fittedvalues, color='red')
plt.title('Scatter Plot with OLS Fit')plt.subplot(1, 2, 2)
sns.residplot(x=ols_model.fittedvalues, y=ols_model.resid)
plt.title('Residual Plot')
plt.show()

在这里插入图片描述

步骤5:应用于回归模型

# Robust regression using Least Absolute Deviations (LAD)
lad_model = smf.quantreg('metastasis_fraction ~ tumor_size + tumor_size_squared', data=data).fit(q=0.5)# Robust regression using M-Estimation with HuberT norm
rlm_huber = RLM(data['metastasis_fraction'], sm.add_constant(data[['tumor_size', 'tumor_size_squared']]), M=HuberT()).fit()

步骤6:使用统计方法识别离群值

# Studentized Residuals
data['studentized_residuals'] = ols_model.get_influence().resid_studentized_internal# Cook's Distance
data['cooks_distance'] = ols_model.get_influence().cooks_distance[0]# Hadi's Potential (not directly available in statsmodels, so we use an approximation)
data['leverage'] = ols_model.get_influence().hat_matrix_diag# Mark potential outliers
outlier_indices = data[(np.abs(data['studentized_residuals']) > 2) | (data['cooks_distance'] > 4/(n-2)) | (data['leverage'] > 0.2)].index
outliers = data.loc[outlier_indices]

步骤7:比较不同方法的结果

# OLS model
print("OLS Model Summary:")
print(ols_model.summary())# LAD model
print("\nLAD Model Summary:")
print(lad_model.summary())# RLM model with HuberT norm
print("\nRLM Model (HuberT) Summary:")
print(rlm_huber.summary())# Goodness-of-fit measures
print("\nGoodness-of-Fit Measures:")
print(f"OLS Mean Squared Error: {mean_squared_error(data['metastasis_fraction'], ols_model.fittedvalues)}")
print(f"LAD Mean Squared Error: {mean_squared_error(data['metastasis_fraction'], lad_model.fittedvalues)}")
print(f"RLM (HuberT) Mean Squared Error: {mean_squared_error(data['metastasis_fraction'], rlm_huber.fittedvalues)}")# Plotting the outliers
plt.figure(figsize=(12, 6))
sns.scatterplot(x='tumor_size', y='metastasis_fraction', data=data)
sns.scatterplot(x='tumor_size', y='metastasis_fraction', data=outliers, color='red')
plt.title('Scatter Plot with Outliers Highlighted')
plt.show()

输出

OLS Model Summary:OLS Regression Results                            
===============================================================================
Dep. Variable:     metastasis_fraction   R-squared:                       0.125
Model:                             OLS   Adj. R-squared:                  0.107
Method:                  Least Squares   F-statistic:                     7.134
Date:                 Tue, 30 Jul 2024   Prob (F-statistic):            0.00127
Time:                         21:15:45   Log-Likelihood:                -237.57
No. Observations:                  103   AIC:                             481.1
Df Residuals:                      100   BIC:                             489.0
Df Model:                            2                                         
Covariance Type:             nonrobust                                         
======================================================================================coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------------
Intercept              2.6754      0.709      3.772      0.000       1.268       4.083
tumor_size            -1.2510      0.332     -3.769      0.000      -1.910      -0.593
tumor_size_squared     0.1196      0.032      3.712      0.000       0.056       0.183
==============================================================================
Omnibus:                       35.806   Durbin-Watson:                   1.658
Prob(Omnibus):                  0.000   Jarque-Bera (JB):              299.629
Skew:                           0.732   Prob(JB):                     8.64e-66
Kurtosis:                      11.226   Cond. No.                         142.
==============================================================================Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.LAD Model Summary:QuantReg Regression Results                          
===============================================================================
Dep. Variable:     metastasis_fraction   Pseudo R-squared:               0.1515
Model:                        QuantReg   Bandwidth:                       2.178
Method:                  Least Squares   Sparsity:                        5.458
Date:                 Tue, 30 Jul 2024   No. Observations:                  103
Time:                         21:15:45   Df Residuals:                      100Df Model:                            2
======================================================================================coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------------
Intercept              3.0050      0.785      3.828      0.000       1.447       4.563
tumor_size            -1.6699      0.367     -4.545      0.000      -2.399      -0.941
tumor_size_squared     0.1686      0.036      4.729      0.000       0.098       0.239
======================================================================================RLM Model (HuberT) Summary:Robust linear Model Regression Results                    
===============================================================================
Dep. Variable:     metastasis_fraction   No. Observations:                  103
Model:                             RLM   Df Residuals:                      100
Method:                           IRLS   Df Model:                            2
Norm:                           HuberT                                         
Scale Est.:                        mad                                         
Cov Type:                           H1                                         
Date:                 Tue, 30 Jul 2024                                         
Time:                         21:15:45                                         
No. Iterations:                     11                                         
======================================================================================coef    std err          z      P>|z|      [0.025      0.975]
--------------------------------------------------------------------------------------
const                  2.5250      0.540      4.674      0.000       1.466       3.584
tumor_size            -1.2436      0.253     -4.919      0.000      -1.739      -0.748
tumor_size_squared     0.1208      0.025      4.923      0.000       0.073       0.169
======================================================================================If the model instance has been used for another fit with different fit parameters, then the fit options might not be the correct ones anymore .Goodness-of-Fit Measures:
OLS Mean Squared Error: 5.900980188225848
LAD Mean Squared Error: 6.09596526991115
RLM (HuberT) Mean Squared Error: 5.909805102901932

在这里插入图片描述

总结

离群值检测是非线性回归分析的一个重要内容。通过采用目视检查,统计方法和鲁棒的回归技术相结合,研究人员可以确保准确可靠的参数估计。使用先进的方法,如ROUT方法和蒙特卡罗模拟能进一步提高了分析的鲁棒性。正确处理离群值会产生更值得信赖的模型和更好的基于数据的决策。

相关文章:

机器学习 | 非线性回归拟合数据时的离群值检测

非线性回归是一种用于模拟变量之间复杂关系的强大工具。然而,离群值的存在可能会显着扭曲结果,导致参数估计不准确和预测不可靠。因此,检测离群值对于稳健的非线性回归分析至关重要。本文深入研究了在非线性回归中识别离群值的方法和技术&…...

使用elasticsearch-head插件修改elasticsearch数据

1、先使用elasticsearch-head插件基本查询功能找到要修改的数据 2、切换到复合查询界面 url: http://es的ip地址:端口号/索引名称/文档类型(没特殊设置过就是_doc)/文档id/ 例子:http://127.0.0.1:9200/tab_inout_record/_doc/84…...

202412月最新植物大战僵尸杂交版【V3.0.1】更新内容与下载

以下是对UI优化和新内容添加的摘要: UI优化摘要: 主界面重做:对游戏的主界面进行全面的设计更新,提升用户体验。商店重做:对游戏内的商店界面进行重新设计,以改善玩家的购物体验。选卡界面增加图鉴功能&a…...

游戏渠道假量解决方案

某推广公司在推广过程中被查出“短期内点击量激增”“存在同一地址多次访问”“已注册用户重复注册”等数据作弊行为,法院判罚退还服务费200余万元,并赔偿违约金约350万元。 某公司为提升其游戏在应用商店榜单排名,委托某网络公司进行下载、注…...

Java系统对接企业微信审批项目流程

若依做的一个系统需求需要对接企业微信的人员去审核订单 回款之类,以下是详细步骤. 1.首先登入企业微信管理后台: 企业微信 2.找到应用管理 3.自建一个应用 4.这些数据都可以拿到 5.配置可信Ip 6.进入有两种方法让你去配置 ,第一种用公司的…...

基于Springboot人口老龄化社区服务与管理平台【附源码】

基于Springboot人口老龄化社区服务与管理平台 效果如下: 系统登陆页面 系统主页面 社区信息页面 社区文件页面 活动报名页面 走访任务管理页面 社区资讯页面 老人信息管理页面 研究背景 随着社会老龄化的加剧,老年人口比例逐渐增加,对老年…...

Dot Foods EDI 需求分析及对接流程

Dot Foods 是一家美国领先的食品和非食品产品的中间批发分销商,主要为食品服务、零售和分销行业的客户提供服务,是北美大型食品中间分销商之一。Dot Foods (以下简称 Dot)的业务模式是通过整合多个供应商的产品,为客户…...

代码随想录day24 | leetcode 93.复原IP地址 90.子集 90.子集II

93.复原IP地址 Java class Solution {List<String> result new ArrayList<String>();StringBuilder stringBuilder new StringBuilder();public List<String> restoreIpAddresses(String s) {backtracking(s, 0, 0);return result;}// number表示stringb…...

探索国产数字隔离器——测试与应用

国产数字隔离器已成为现代电子产品中的关键部件&#xff0c;以增强的性能和可靠性取代了传统的光耦合器。这些隔离器广泛应用于医疗设备、汽车电子、工业自动化和其他需要强大信号隔离的领域。准确测试这些设备是确保其质量和性能的基本步骤。 如何测试数字隔离器 测试数字隔离…...

IDEA无法打开插件市场的解决

1.版本 我的IDEA版本号为2020.1.4 大家可以从IDEA的help->about进行版本号的查看 2.解决 我们直接到jetbrains官网搜索你想要下载的插件 直接下载即可自动导入...

以腾讯混元模型为例,在管理平台上集成一个智能助手

背景 前几天&#xff0c;公司的同事们一起吃了个饭&#xff0c;餐桌上大家聊到大模型的落地场景。我个人在去年已经利用百度千帆平台写过案例&#xff0c;并发过博客&#xff08;传送门&#x1f449;&#xff1a;利用文心千帆打造一个属于自己的小师爷&#xff09;&#xff0c…...

15.初识接口1 C#

这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】&#xff08;文心一言AI生成&#xff09; 在C#编程世界中&#xff0c;接口&#xff08;Interface&#xff09;扮演着至关重要的角色&#xff0c;它定义了一组方法&#xff0c;但不提供这些方法的实现。它要求所…...

探索 Python编程 调试案例:计算小程序中修复偶数的bug

在 学习Python 编程的过程里&#xff0c;会遇到各种各样的bug。而修复bug调试代码就像是一场充满挑战的侦探游戏。每一个隐藏的 bug 都是谜题&#xff0c;等待开发者去揭开真相&#xff0c;让程序可以顺利运行。今天&#xff0c;让我们通过一个实际案例&#xff0c;深入探索 Py…...

【Unity/HFSM】使用UnityHFSM实现输入缓冲(预输入)和打断机制

文章目录 前言预输入Animancer的InputBuffer&#xff1a;在UnityHFSM中实现InputBuffer&#xff1a; 打断机制 前言 参考Animancer在状态机中的InputBuffer&#xff0c;在UnityHFSM中实现类似的InputBuffer机制&#xff0c;同时扩展一个状态打断机制 插件介绍&#xff1a; A…...

Unity 圆形循环复用滚动列表

一.在上一篇垂直循环复用滚动列表的基础上&#xff0c;扩展延申了圆形循环复用滚动列表。实现此效果需要导入垂直循环复用滚动列表里面的类。 1.基础类 using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using …...

聚水潭数据无缝集成到金蝶云星空的实现方案

聚水潭数据集成到金蝶云星空&#xff1a;聚水潭调拨对接金蝶直接调拨ok 在企业信息化管理中&#xff0c;数据的高效流动和准确对接是实现业务流程顺畅运行的关键。本文将分享一个具体的系统对接集成案例——如何通过轻易云数据集成平台&#xff0c;将聚水潭的数据无缝集成到金…...

虚拟机断网没有网络,需清理内存,删除后再重启

进入NetworkManager可能没权限&#xff0c;设置权限777 to...

[c++11(二)]Lambda表达式和Function包装器及bind函数

1.前言 Lambda表达式着重解决的是在某种场景下使用仿函数困难的问题&#xff0c;而function着重解决的是函数指针的问题&#xff0c;它能够将其简单化。 本章重点&#xff1a; 本章将着重讲解lambda表达式的规则和使用场景&#xff0c;以及function的使用场景及bind函数的相关使…...

基于字节大模型的论文翻译(含免费源码)

基于字节大模型的论文翻译 源代码&#xff1a; &#x1f44f; star ✨ https://github.com/boots-coder/LLM-application 展示 项目简介 本项目是一个基于大语言模型&#xff08;Large Language Model, LLM&#xff09;的论文阅读与翻译辅助工具。它通过用户界面&#xff08…...

Mysql语法之DQL查询的多行函数

Mysql的多行函数和分组 目录 Mysql的多行函数和分组多行函数概念常用的多行函数 数据分组概念语法where和having的区别 语句关键字及执行顺序语句关键字执行顺序 实际操作基本语句格式和多行操作筛选语句格式 多行函数 概念 不管函数处理多少条&#xff0c;只返回一条记录&…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...