拓端tecdat|R语言进行数值模拟:模拟泊松回归模型的数据
原文链接:http://tecdat.cn/?p=6751
原文出处:拓端数据部落公众号
模拟回归模型的数据
验证回归模型的首选方法是模拟来自它们的数据,并查看模拟数据是否捕获原始数据的相关特征。感兴趣的基本特征是平均值。我喜欢这种方法,因为它可以扩展到广义线性模型(logistic,Poisson,gamma,...)和其他回归模型,比如t -regression。
您的标准回归模型假设存在将预测变量与结果相关联的真实/固定参数。但是,当我们执行回归时,我们只估计这些参数。因此,回归软件返回表示系数不确定性的标准误差。
我将用一个例子来证明我的意思。
示范
我将使用泊松回归来证明这一点。我模拟了两个预测变量,使用50的小样本。
n <- 50
set.seed(18050518)
xc的系数为0.5 ,xb的系数为1 。我对预测进行取幂,并使用该函数生成泊松分布结果。
rpois()
# 指数预测传递给 rpois()summary(dat)xc xb y Min. :-2.903259 Min. :0.00 Min. :0.00 1st Qu.:-0.648742 1st Qu.:0.00 1st Qu.:1.00 Median :-0.011887 Median :0.00 Median :2.00 Mean : 0.006109 Mean :0.38 Mean :2.02 3rd Qu.: 0.808587 3rd Qu.:1.00 3rd Qu.:3.00 Max. : 2.513353 Max. :1.00 Max. :7.00
接下来是运行模型。
Call:
glm(formula = y ~ xc + xb, family = poisson, data = dat)Deviance Residuals:Min 1Q Median 3Q Max
-1.9065 -0.9850 -0.1355 0.5616 2.4264 Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.20839 0.15826 1.317 0.188
xc 0.46166 0.09284 4.973 6.61e-07 ***
xb 0.80954 0.20045 4.039 5.38e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for poisson family taken to be 1)Null deviance: 91.087 on 49 degrees of freedom
Residual deviance: 52.552 on 47 degrees of freedom
AIC: 161.84Number of Fisher Scoring iterations: 5
估计的系数与人口模型相距不太远,.21代表截距而不是0,.46而不是.5,而0.81而不是1。
接下来模拟模型中的数据,我想要10,000个模拟数据集,为了捕捉回归系数的不确定性,我假设系数来自多元正态分布,估计系数作为均值,回归系数的方差 - 协方差矩阵作为多元正态分布的方差 - 协方差矩阵。
coefs <- mvrnorm(n = 10000, mu = coefficients(fit.p), Sigma = vcov(fit.p))
检查模拟系数与原始系数的匹配程度。
coefficients(fit.p)(Intercept) xc xb0.2083933 0.4616605 0.8095403colMeans(coefs) # 模拟系数的均值(Intercept) xc xb0.2088947 0.4624729 0.8094507
标准错误:
sqrt(diag(vcov(fit.p)))(Intercept) xc xb0.15825667 0.09284108 0.20044809apply(coefs, 2, sd) #模拟系数的标准差(Intercept) xc xb0.16002806 0.09219235 0.20034148
下一步是模拟模型中的数据。我们通过将模拟系数的每一行乘以原始预测变量来实现。然后我们传递预测:
#每种情况一行,每组模拟系数一行#模型矩阵与系数的乘积,取幂,
#然后用于模拟泊松分布的结果
for (i in 1:nrow(coefs)) {sim.dat[, i] <- rpois(n, exp(fit.p.mat %*% coefs[i ]))
}
rm(i, fit.p.mat) #
现在一个是完成模拟,将模拟数据集与原始数据集至少比较结果的均值和方差:
c(mean(dat$y), var(dat$y))#原始结果的均值和方差[1] 2.020000 3.366939c(mean(colMeans(sim.dat)), mean(apply(sim.dat, 2, var)))#10,000个模拟结果的平均值和变量的平均值[1] 2.050724 4.167751
模拟结果的平均值略高于原始数据,平均方差更高。平均而言,可以预期方差比平均值更偏离目标。方差也将与一些极高的值正偏差,同时,它的界限为零,因此中位数可能更好地反映了数据的中心:
[1] 3.907143
中位数方差更接近原始结果的方差。
这是模拟均值和方差的分布:
绘制10,000个模拟数据集中的一些数据集的直方图并将其与原始结果的直方图进行比较也是有用的。还可以测试原始数据和模拟数据集中xb = 1和xb = 0之间结果的平均差异。
回到基础R,它具有simulate()
执行相同操作的功能:
sim.default <- simulate(fit.p, 10000)
此代码相当于:
sim.default <- replicate(10000, rpois(n, fitted(fit.p)))
fitted(fit.p)
是响应尺度的预测,或指数线性预测器,因为这是泊松回归。因此,我们将使用模型中的单组预测值来重复创建模拟结果。
c(mean(colMeans(sim.default)), mean(apply(sim.default, 2, var)),[1] 2.020036 3.931580 3.810612
与忽略系数不确定性时相比,均值和方差更接近原始结果的均值和方差。与考虑回归系数的不确定性时相比,这种方法总是会导致方差较小。它要快得多,并且需要零编程来实现,但我不习惯忽略回归系数的不确定性,使模型看起来比它更充分。
非常感谢您阅读本文,有任何问题请在下面留言!
最受欢迎的见解
1.R语言多元Logistic逻辑回归 应用案例
2.面板平滑转移回归(PSTR)分析案例实现
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
4.R语言泊松Poisson回归模型分析案例
5.R语言回归中的Hosmer-Lemeshow拟合优度检验
6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
7.在R语言中实现Logistic逻辑回归
8.python用线性回归预测股票价格
9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标
拓端tecdat|R语言进行数值模拟:模拟泊松回归模型的数据相关推荐
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- R语言进行数值模拟:模拟泊松回归模型的数据
模拟回归模型的数据 验证回归模型的首选方法是模拟来自它们的数据,并查看模拟数据是否捕获原始数据的相关特征.感兴趣的基本特征是平均值.我喜欢这种方法,因为它可以扩展到广义线性模型(logistic,Po ...
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- R语言caret包构建机器学习回归模型(regression model)、使用DALEX包进行模型解释分析、特征重要度、偏依赖分析等
R语言caret包构建机器学习回归模型(regression model).使用DALEX包进行模型解释分析.特征重要度.偏依赖分析等 目录
- R语言使用broom包将回归模型(线性回归、逻辑回归、比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集
R语言使用broom包将回归模型(线性回归.逻辑回归.比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集 目录
- R语言无序多分类Logistic回归模型实战
R语言无序多分类Logistic回归模型实战 目录 R语言无序多分类Logistic回归模型实战 #导入包 #加载数据数据编码
- R语言基于glmnet构建Logistic回归模型使用L1正则化并可视化系数及最佳lambda值
R语言基于glmnet构建Logistic回归模型使用L1正则化并可视化系数及最佳lambda值 Glmnet主要用于拟合广义线性模型.筛选可以使loss达到最小的正则化参数lambda.该算法非常快 ...
- R语言使用lm函数构建回归模型、使用broom包的augmented函数将模型结果存入dataframe中、使用ggplot2可视化回归残差图(拟合值和残差值的关系图)
R语言使用lm函数构建回归模型.使用broom包的augmented函数将模型结果存入dataframe中.使用ggplot2可视化回归残差图(拟合值和残差值的关系图) 目录
最新文章
- OpenStack 和 Cloud Foundry
- java实现时钟方法汇总
- The Vector Packet Processor (VPP)的安装
- mysql数据库存储多语言_数据库---数据控制语言(DCL)
- MOSS关于Workflow
- Django---部署
- Keras的基本使用(1)--创建,编译,训练模型
- 文件共享文件传输samba ftp nfs
- 1. VS2017社区版安装
- stlink stm8接口定义_stm8,swim接口
- linux 拷贝目录报错,Linux复制文件时出现omitting directory错误怎么办
- 图床,全网最稳定的免费图床
- 面试时如何更好的介绍自己的项目
- 【大数据实战项目八】使用机器学习算法进行预测分析并进行网上部署
- 关于DBSCAN图像上小圆圈和大圆圈的问题
- 从IDEA代码调试器的threads选项卡的一个细节谈如何学习编程
- c++ 中对vector的使用方法
- 美国秘密命令谷歌、微软和雅虎交出搜索指定关键词的人员信息
- 中国移动5G最新规划:今年5G套餐用户突破1亿 | 附PPT
- 京东试用机器人 油猴代码待修复