基于R语言实现的负二项回归模型【理解与实现】-理解负二项回归模型和泊松回归模型之间的区别

embedded/2024/9/22 9:47:12/

前言

我们可以在R语言中使用MASS包中的glm.nb函数来拟合负二项模型,以及使用glm函数来拟合泊松模型。以下是一个详细的过程,包括模拟数据的生成、模型的拟合、结果的比较和解释。

需要的包

if (!require("MASS")) install.packages("MASS")
if (!require("ggplot2")) install.packages("ggplot2")library(MASS)
library(ggplot2)

产生模拟数据

生成具有过度离散特性的计数数据。

set.seed(123)  # 设置随机数种子# 创建一些预测变量
n <- 1000
x1 <- rnorm(n)
x2 <- rnorm(n)# 创建过度离散数据
mu <- exp(1 + 0.3*x1 - 0.4*x2)  # 真实均值
size <- 1.5  # 负二项分布的大小参数,控制离散程度
k <- rnbinom(n, mu = mu, size = size)data <- data.frame(counts=k, x1=x1, x2=x2)

在这里插入图片描述

拟合泊松模型

使用glm函数以泊松分布拟合数据。

poisson_model <- glm(counts ~ x1 + x2, family = poisson, data = data)
summary(poisson_model)

在这里插入图片描述

拟合负二项模型

使用glm.nb函数以负二项分布拟合同样的数据。

negbin_model <- glm.nb(counts ~ x1 + x2, data = data)
summary(negbin_model)

在这里插入图片描述

结果的比较和诊断

比较两个模型的拟合优度,检查是否有过度离散。

# 计算泊松模型的离散统计量
poisson_dispersion <- sum(residuals(poisson_model, type = "pearson")^2) / poisson_model$df.residual
cat("泊松模型的离散统计量:", poisson_dispersion, "\n")# 使用AIC比较模型
cat("泊松模型的AIC:", AIC(poisson_model), "\n")
cat("负二项模型的AIC:", AIC(negbin_model), "\n")# 检验回归系数的显著性
coef(summary(poisson_model))
coef(summary(negbin_model))# 可视化
ggplot(data, aes(x = counts)) +geom_histogram(binwidth = 1, fill = "blue", alpha = 0.5) +labs(title = "Count Data Distribution", x = "Count", y = "Frequency")

在这里插入图片描述
在这里插入图片描述

解释

  • 离散统计量:泊松模型的离散统计量应接近1。如果这个值显著大于1,就说明有过度离散。
  • AIC(赤池信息量准则):AIC提供了一个衡量模型拟合优度的方法,考虑到了模型复杂性。更小的AIC值通常意味着更好的模型。
  • 回归系数:对于两个模型,我们都可以查看回归系数的估计和它们的统计显著性。
  • 可视化:生成数据的直方图可以帮助我们直观了解数据的分布。对于过度离散的数据,我们预期直方图会显示出尾部较重或者集中在0的频数较多。
    通过这个过程,我们可以清楚地看到负二项模型和泊松模型在处理过度离散数据时的不同表现。实际上,负二项模型更适合这些数据,因为它考虑到了变异性,并且AIC值也应该较低,表明更好的数据拟合。通过查看系数和它们的显著性,我们可以确定哪个模型提供了更可信的解释。

在这里插入图片描述


http://www.ppmy.cn/embedded/7046.html

相关文章

【数学建模】优劣解距离法Topsis模型(含MATLAB代码)

TOPSIS法&#xff0c;全称 Technique for Order Preference by Similarity to an Ideal Solution&#xff0c;是由C.L.Hwang和K.Yoon于1981年首次提出的 。这是一种多目标决策分析中常用的有效方法&#xff0c;也被称作优劣解距离法 。 TOPSIS法的基本原理是通过检测评价对象与…

asp.net core mvc 路由

在ASP.NET Core MVC中&#xff0c;路由是一项核心功能&#xff0c;它负责将进来的HTTP请求映射到相应的控制器和动作方法上。ASP.NET Core支持两种路由方式&#xff1a;传统的基于模板的路由&#xff08;约定路由&#xff09;和属性路由。 1. 基于约定的路由 在Startup.Confi…

简单了解 HTTP 基础知识

HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于在网络上传输数据的一种协议&#xff0c;对于网络开发人员来说&#xff0c;理解这一协议是至关重要的。由于其广泛的应用&#xff0c;除了在网页应用传输数据之外&#xff0c;它还被应…

Linux应用开发(8):Linux进程间通信(IPC):管道

Linux应用开发&#xff08;7&#xff09;&#xff1a;Linux进程间通信&#xff08;IPC&#xff09;&#xff1a;POSIX消息队列https://blog.csdn.net/tecsai/article/details/137879465 1. 简述 我们在前面已经介绍了进程间通信&#xff08;IPC&#xff09;常用的“消息队列”…

微服务分布式缓存:无法反序列化 Cannot deserialize;

问题描述 在拆分SpringBoot项目搭建微服务的过程中&#xff0c;需要配置分布式缓存&#xff0c;对redis进行配置&#xff0c;配置完成后&#xff0c;在启动Knife4j文档界面时报错&#xff0c;发现是redis无法反序列化的问题&#xff0c;但是报错中所指出的类com.jhin.jhinoj.m…

GO环境及入门案例

文章目录 简介一、win GO开发环境安装二、Linux go运行环境二、GO代码入门2.1 导包案例2.2 赋值2.3 变量、函数2.4 三方库使用 简介 go不是面向对象语言&#xff0c; 其指针、结构体等比较像C&#xff0c;知名的go 开源项目有docker k8s prometheus node-exporter等 一、win …

百度文心一言与谷歌Gemini的对比

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 本文从多角度将百度文心一言与谷歌Gemini进行对比。因为不同评测基准的侧重点和难度可能有所不同&#xff0c;所以本文涉及到的评测结果仅供参考。Gemini和文心一言都是非常…

sqlite

SQLite是一种轻量级的嵌入式数据库引擎&#xff0c;它被广泛应用于移动设备、嵌入式系统和桌面应用程序等领域。最近&#xff0c;SQLite在以下几个方向上有了新的发展&#xff1a; 1. 支持JSON数据类型&#xff1a;SQLite 3.9版本引入了对JSON数据类型的支持&#xff0c;使得开…