半参数模型

4. 半参数模型 (Semi-parametric Model)

半参数模型结合了参数化和非参数化的方法。可以在整体上采用线性回归,但在局部允许非线性变化。这样做的目的是在保持模型的线性解释性的同时,捕捉细微的弧度趋势。

例如,可以定义:
y = β 0 + β 1 x + g ( x ) + ϵ y = \beta_0 + \beta_1 x + g(x) + \epsilon y=β0+β1x+g(x)+ϵ
其中 g ( x ) g(x) g(x) 是一个非参数化函数,例如平滑样条,可以捕捉数据的局部弧度。

  • 优点:与 GAM 类似,保持模型解释性的同时捕捉非线性。
  • 缺点:需要选择合适的非参数函数形式,可能较复杂。

半参数模型结合了线性成分和非线性成分,既可以捕捉数据中的线性趋势,也可以处理局部的非线性变化。在 Python 中,我们可以使用 statsmodels 中的 GLM(广义线性模型)和样条函数来实现半参数模型。这种方法既保持了全局的线性趋势,又允许局部的平滑变化。

以下是一个半参数模型的 Python 示例。代码会生成数据、拟合半参数模型,并绘制数据散点、回归线以及置信区间。

代码示例

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.gam.api import GLMGam, BSplines
from patsy import dmatrix# 生成带有线性和非线性成分的样本数据
np.random.seed(42)
x = np.linspace(0, 10, 100)
y = 1.5 * x + 0.5 * np.sin(x * 1.5) + np.random.normal(0, 0.5, size=x.shape)# 重新调整形状以适应 statsmodels 的输入格式
X = sm.add_constant(x)  # 添加常数项
X_spline = dmatrix("bs(x, df=5, degree=3)", {"x": x}, return_type='dataframe')  # 样条基函数# 使用 statsmodels 构建半参数模型
model = GLMGam(y, exog=X, smoother=BSplines(x[:, None], df=[5], degree=[3]))
result = model.fit()# 预测和计算置信区间
x_pred = np.linspace(0, 10, 100)
X_pred = sm.add_constant(x_pred)
X_spline_pred = dmatrix("bs(x_pred, df=5, degree=3)", {"x_pred": x_pred}, return_type='dataframe')
y_pred = result.predict(exog=X_pred, exog_smooth=X_spline_pred)# 使用 Bootstrap 计算置信区间
n_bootstraps = 200
y_pred_bootstrap = []for _ in range(n_bootstraps):# 随机采样并拟合模型sample_indices = np.random.choice(len(x), len(x), replace=True)X_sample = X[sample_indices]X_spline_sample = X_spline.iloc[sample_indices]y_sample = y[sample_indices]model_sample = GLMGam(y_sample, exog=X_sample, smoother=BSplines(x[sample_indices][:, None], df=[5], degree=[3]))result_sample = model_sample.fit()y_pred_sample = result_sample.predict(exog=X_pred, exog_smooth=X_spline_pred)y_pred_bootstrap.append(y_pred_sample)# 将预测结果转换为数组
y_pred_bootstrap = np.array(y_pred_bootstrap)# 计算置信区间
lower_bound = np.percentile(y_pred_bootstrap, 2.5, axis=0)
upper_bound = np.percentile(y_pred_bootstrap, 97.5, axis=0)# 绘制散点图、回归曲线和置信区间
plt.figure(figsize=(10, 6))
plt.scatter(x, y, color='gray', label='Data Points')
plt.plot(x_pred, y_pred, color='blue', label='Semi-parametric Model')
plt.fill_between(x_pred, lower_bound, upper_bound, color='lightblue', alpha=0.5, label='95% Confidence Interval')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Semi-parametric Model with 95% Confidence Interval')
plt.legend()
plt.show()

代码说明

  1. 数据生成:创建含有线性趋势和轻微非线性成分的数据,公式为 y = 1.5 x + 0.5 sin ⁡ ( 1.5 x ) + noise y = 1.5x + 0.5\sin(1.5x) + \text{noise} y=1.5x+0.5sin(1.5x)+noise
  2. 构建半参数模型
    • 线性部分:使用 statsmodelsGLMGam 构建一个广义加性模型(GAM),其中 exog 包含线性成分 X X X
    • 非线性部分:通过样条基函数(B样条)BSplines 添加非线性成分,使模型能够捕捉局部的非线性变化。
  3. 模型拟合与预测:使用拟合后的模型对生成的数据进行预测,并获取预测结果。
  4. 置信区间计算:使用 Bootstrap 方法生成 200 组不同的样本集,拟合并预测得到的回归曲线,并计算 2.5% 和 97.5% 百分位数,作为 95% 的置信区间。
  5. 绘图:绘制数据散点、回归曲线和置信区间。

输出图形

在这里插入图片描述

运行代码后生成以下内容:

  • 灰色散点图:显示原始数据点。
  • 蓝色回归曲线:显示半参数模型拟合的回归线,结合了线性和非线性成分。
  • 淡蓝色置信区间:展示了通过 Bootstrap 生成的 95% 置信区间,反映了模型在不同 x 值上的置信范围。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/59025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LInux系统编程(二)操作系统和进程

目录 一、前言:冯诺依曼体系结构 1、图中各个单元的介绍 2、值得注意的几点 二、操作系统 1、操作系统分层图 2、小总结 三、 进程(重点) 1、进程的基本概念 2、存放进程信息的数据结构——PCB(Linux 下称作 task_struct…

加法电路和减法电路

一、加法电路 下边为加法电路的拓扑结构 加法电路作用1: 直流量叠加 如上图仿真所示,利用放大器LM324AD进行加法电路的仿真,输入为直流+1V和直流+2V,经过加法运算,根据上边Uo的计算公式进行计算,可得Uo=-3V,和仿真结果保持一致。如下图所示。 加法电路作用2: 信号叠加…

8. 数据结构——邻接表、邻接矩阵的基本操作

一、邻接表 1. 内容 2. 实现代码(直接可以复制使用) //邻接表的相关操作 #include<bits/stdc.h> #define MVnum 100 #define OK 1 #define ERROR -1 using namespace std;typedef int Status; typedef char VerTexType; //假设顶点的数据类型为char typedef int ArcT…

自动化研磨领域的革新者:半自动与自动自磨机的技术突破

据QYResearch调研团队最新报告“全球半自动和自动自磨机市场报告2023-2029”显示&#xff0c;预计2029年全球半自动和自动自磨机市场规模将达到5.3亿美元&#xff0c;未来几年年复合增长率CAGR为3.5%。 图00001. 半自动和自动自磨机&#xff0c;全球市场总体规模 如上图表/数据…

基于RFID的智能门禁系统的设计(论文+源码)

1系统总体设计 本次基于RFID的智能门禁系统的设计与实现课题&#xff0c;在功能上设计如下&#xff1a; 1.可以通过RFID模块&#xff0c;实现对IC卡的注册&#xff0c;注销操作&#xff1b; 2.在IC卡解锁时&#xff0c;如果非注册IC卡刷卡时蜂鸣器将报警提示&#xff1b; 3…

CAD图纸防泄密|哪些措施可以加密公司图纸?五个宝藏方法分享,2024必读!

在工程设计领域&#xff0c;CAD图纸作为企业的核心资产&#xff0c;其安全性至关重要。一旦图纸泄露&#xff0c;不仅可能给企业带来重大的经济损失&#xff0c;还可能损害企业的声誉和竞争力。 那么&#xff0c;怎么实现CAD图纸防泄密呢&#xff1f; 以下是五个CAD图纸防泄密…

java项目之文理医院预约挂号系统源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文理医院预约挂号系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息。 项目简介&#xff1a; 本系统的使用角色可…

spring 学习路线梳理(二)注解

1.通过注解的方式创建bean 1.1 定义dao层的接口和实现 public interface ILoginDao {public String login(); }Slf4j Repository public class LoginDaoImpl implements ILoginDao {public LoginDaoImpl(){System.out.println("spring create bean call");}Override…

Blender进阶:着色器节点

11 着色器节点 11.1着色器 着色器Shader&#xff0c;负责给物体表面着色。 综合以下参数&#xff1a; -基础色-金属度、粗超度、透明度-法向-入射光颜色、强度、角度。。 着色器本质上是一段程序、算法&#xff0c;即着色器编程。 在节点编辑器中&#xff0c;支持算法的可…

状态检测防火墙报文处理发流程

华为大同&#xff1a;全系列状态检测防火墙报文处理流程 华为防火墙在处理报文时&#xff0c;其核心在于其状态检测与会话机制&#xff1a;当防火墙接收到报文后&#xff0c;它会在特定时间和条件下创建会话&#xff0c;并对那些与会话表匹配的报文进行特定的转发处理。基于这一…

深入探讨SEO分析技巧助力网站流量提升

内容概要 在当前的数字化时代&#xff0c;SEO分析的重要性不言而喻。它是提升网站流量的关键工具&#xff0c;帮助站长有效地优化网站内容和结构。通过系统的SEO分析&#xff0c;站长可以掌握用户搜索行为和需求&#xff0c;从而制定出更具针对性的内容策略。例如&#xff0c;…

【天线&通讯】电力设施检测系统源码&数据集全套:改进yolo11-RFCAConv

改进yolo11-DAttention等200全套创新点大全&#xff1a;电力设施检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.11.01 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者…

18.农产品销售系统(基于springboot和vue的Java项目)

目录 1.系统的受众说明 2.开发环境与技术 2.1 Java语言 2.2 MYSQL数据库 2.3 IDEA开发工具 2.4 Spring Boot框架 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信…

uni-app发起请求以及请求封装,上传及下载功能(六)

文章目录 一、发起网络请求1.使用及封装2. https 请求配置自签名证书3.拦截器 二、上传下载1.上传 uni.uploadFile(OBJECT)2. 下载 uni.downloadFile(OBJECT) 一、发起网络请求 uni-app中内置的uni.request()已经很强大了&#xff0c;简单且好用。为了让其更好用&#xff0c;同…

地理信息科学专业想搞GIS开发:学前端还是后端?

地理信息科学专业的同学是学前端开发比较好呢还是学后端开发比较好呢&#xff1f; 部分网友&#xff1a;学前端更好 主修前端更好&#xff0c;因为地信学后端&#xff0c;是卷不赢学计算机的 本科卷前端&#xff0c;硕士阶段可以卷后端 甚至有网友直呼&#xff0c;地信根本没有…

美格智能5G车规级通信模组:以连接+算力驱动智能化进阶

2023年3月&#xff0c;基于高通公司第二代骁龙汽车5G调制解调器及射频系统平台SA522M/SA525M&#xff0c;美格智能在德国纽伦堡嵌入式系统展上正式发布全新一代5G车规级C-V2X通信模组MA922系列&#xff0c;迅速引起行业和市场关注。随着5G高速网联逐步成为智能汽车标配&#xf…

win11不好用怎么退回win10_win11退回win10多种方法

最近有网友问我win11不好用怎么退回win10&#xff1f;win11感觉不好用&#xff0c;很多用户这时候想退回win10系统。电脑安装Win11系统觉得操作起来不太习惯&#xff0c;想要重新回到上一个系统&#xff0c;有什么办法实现?其实&#xff0c;微软也在Win11中准备了回退功能,让用…

「Mac畅玩鸿蒙与硬件19」鸿蒙UI组件篇9 - 自定义动画实现

自定义动画让开发者可以设计更加个性化和复杂的动画效果,适合表现独特的界面元素。鸿蒙提供了丰富的工具,支持通过自定义路径和时间控制来创建复杂的动画运动。本篇将带你学习如何通过自定义动画实现更多样化的效果。 关键词 自定义动画动画路径贝塞尔曲线动画控制一、Animat…

【分立元件】贴片电阻过电压故障机理

在文章:【分立元件】贴片电阻器的故障现象和原理 中我们讲到电阻故障现象类型。其中包括了由电气过载导致的电阻体烧损。 在文章:

ubuntu-开机黑屏问题快速解决方法

开机黑屏一般是由于显卡驱动出现问题导致。 快速解决方法&#xff1a; 通过ubuntu高级选项->recovery模式->resume->按esc即可进入recovery模式&#xff0c;进去后重装显卡驱动&#xff0c;重启即可解决。附加问题&#xff1a;ubuntu的默认显示管理器是gdm3,如果重…