R语言贝叶斯线性回归和多元线性回归构建工资预测模型
2021-05-30 02:02
标签:构造 引入 dia square 定义 规范 median 推理 命令 在劳动经济学领域,收入和工资的研究为从性别歧视到高等教育等问题提供了见解。在本文中,我们将分析横断面工资数据,以期在实践中使用贝叶斯方法,如BIC和贝叶斯模型来构建工资的预测模型。 在本实验中,我们将使用dplyr包探索数据,并使用ggplot2包进行数据可视化。我们也可以在其中一个练习中使用MASS包来实现逐步线性回归。 我们将在实验室稍后使用此软件包中使用BAS.LM来实现贝叶斯模型。 本实验室将使用的数据是在全国935名受访者中随机抽取的。 这是观察研究还是实验? 与任何新数据集一样,标准的探索性数据分析是一个好的开始。我们将从工资变量开始,因为它是我们模型中的因变量。 由于工资是我们的因变量,我们想探讨其他变量之间的关系作为预测。 对于我们在数据中看到的工资差异,一个可能的解释是,更聪明的人赚更多的钱。下图显示了周工资和智商得分之间的散点图。 这个图是相当杂乱的。虽然智商分数和工资之间可能存在轻微的正线性关系,但智商充其量只是一个粗略的工资预测指标。我们可以通过拟合一个简单的线性回归来量化这一点。 回想一下,在模型下 如果使用 和参考先验 ,然后贝叶斯后验均值和标准差分别等于频数估计和标准差。 贝叶斯模型规范假设误差正态分布且方差为常数。与频率法一样,我们通过检查模型的残差分布来检验这一假设。如果残差是高度非正态或偏态的,则违反了假设,任何随后的推断都是无效的。 练习:重新调整模型,这次使用educ(教育)作为自变量。你对上一个练习的回答有变化吗? 同样的结论是,该线性模型的残差与?i~N(0,σ2)近似正态分布,因此可以在该线性模型的基础上进行进一步的推断。 适应数据右偏的一种方法是(自然)对数变换因变量。请注意,这仅在变量严格为正时才可能,因为没有定义负值的对数,并且log(0)=?∞。我们试着用对数工资作为因变量来拟合一个线性模型。问题4将基于这个对数转换模型。 练习:检查该模型的残差。假设正态分布的残差合理吗? 基于上述残差图,可以假定对数工资线性模型与iq的正态分布。 回想一下,给定σ2的α和β的后验分布是正态的,但略微遵循一个具有n?p?1自由度的t分布。在这种情况下,p=1,因为智商是我们模型中唯一的对数工资预测因子。因此,α和β的后验概率都遵循933自由度的t分布,因为df非常大,这些分布实际上是近似正态的。 练习:智商系数很小,这是意料之中的,因为智商分数提高一分很难对工资产生很高的倍增效应。使系数更易于解释的一种方法是在将智商放入模型之前将其标准化。从这个新模型来看,智商提高1个标准差(15分)估计工资会增加多少百分比? 智商是用scale函数标准化的,智商提高15分会引起工资的提高 很明显,工资可以用很多预测因素来解释,比如经验、教育程度和智商。我们可以在回归模型中包含所有相关的协变量,试图尽可能多地解释工资变化。 lm中的.的使用告诉R在模型中包含所有协变量,然后用-wage进一步修改,然后从模型中排除工资变量。 由于这些缺失的值,我们必须做一个额外的假设,以便我们的推论是有效的。换句话说,我们的数据必须是随机缺失的。例如,如果所有第一个出生的孩子没有报告他们的出生顺序,数据就不会随机丢失。在没有任何额外信息的情况下,我们将假设这是合理的,并使用663个完整的观测值(与原来的935个相反)来拟合模型。Bayesian和frequentist方法都存在于处理缺失数据的数据集上,但是它们超出了本课程的范围。 与单一非黑人男子相比,所有其他平等的,已婚的黑人将获得以下乘数。 从线性模型的快速总结中可以看出,自变量的许多系数在统计上并不显著。您可以根据调整后的R2选择变量。本文引入了贝叶斯信息准则(BIC),这是一种可用于模型选择的度量。BIC基于模型拟合,同时根据样本大小按比例惩罚参数个数。我们可以使用以下命令计算全线性模型的BIC: 我们可以比较完整模型和简化模型的BIC。让我们试着从模型中删除出生顺序。为了确保观测值保持不变,可以将数据集指定为na.omit(wage),它只包含没有缺失值的观测值。 如您所见,从回归中删除出生顺序会减少BIC,我们试图通过选择模型来最小化BIC。 练习:R有一个函数stepAIC,它将在模型空间中向后运行,删除变量直到BIC不再降低。它以一个完整的模型和一个惩罚参数k作为输入。根据BIC(在这种情况下k=log(n)k=log(n))找到最佳模型。 通常,几个模型都是同样可信的,只选择一个模型忽略了选择模型中包含的变量所涉及的固有不确定性。解决这一问题的一种方法是实现贝叶斯模型平均(Bayesian model averaging,BMA),即对多个模型进行平均,从新数据中获得系数的后验值和预测值。我们可以使用它来实现BMA或选择模型。我们首先将BMA应用于工资数据。 输出model对象和summary命令为我们提供了每个变量的后验模型包含概率和最可能的模型。例如,模型中包含小时数的后验概率为0.855。此外,后验概率为0.0455的最可能模型包括截距、工作时间、智商、教育程度、年龄、婚姻状况、城市生活状况和母亲教育程度。虽然0.0455的后验概率听起来很小,但它比分配给它的统一先验概率大得多,因为有216个可能的模型。 我们还可以为这些系数提供95%的置信区间: 对于问题7-8,我们将使用简化的数据集,其中不包括兄弟姐妹数量、出生顺序和父母教育。 练习:用数据集绘制年龄系数的后验分布图。 贝叶斯统计的一个主要优点是预测和预测的概率解释。大部分贝叶斯预测都是使用模拟技术来完成的。这通常应用于回归建模中,尽管我们将通过一个仅包含截距项的示例来进行分析。 假设你观察到y的四个数值观测值,分别为2、2、0和0,样本均值y′=1,样本方差s2=4/3。假设y~N(μ,σ2),在参考先验p(μ,σ2)~1/σ2下,我们的后验概率变为 以样本均值为中心 其中a=(n-1)/2和b=s2(n-1)/2=2。 为了得到y5的预测分布,我们可以先从σ2的后验点模拟,然后再从μ模拟y5。我们对y5年的预测结果将来自一项新的观测结果的后验预测分布。下面的示例从y5的后验预测分布中提取100,000次。 我们可以通过观察模拟数据直方图的平滑版本,查看预测分布的估计值。 新观测的95%中心置信区间为在这种情况下,L是0.025分位数,U是0.975分位数。我们可以使用分位数函数来获得这些值,从而找到tracy5的0.025和0.975的样本分位数。 练习:在上面的简单例子中,可以使用积分来分析计算后验预测值。在这种情况下,它是一个具有3个自由度(n?1)的t分布。绘制y的经验密度和t分布的实际密度。它们之间有什么比较? 在BAS中,用贝叶斯模型平均法构造预测区间是通过仿真实现的,而在模型选择的情况下,用预测区间进行精确推理往往是可行的。 回到工资数据集,让我们找到最佳预测模型下的预测值,即预测值最接近BMA和相应的后验标准差的模型。 我们可以将其与我们之前发现的最高概率模型和中位概率模型(MPM)进行比较 MPM除了包含HPM的所有变量外,还包含exper,而BPM除了MPM中的所有变量外,还包含kwh。 可以得到预测对数工资的95%可信区间 换算成工资,我们可以将区间指数化。 获得一个95%的预测区间的工资。 练习:使用简化后的数据,为BPM下预测工资最高的个人构建95%的预测区间。 Wooldridge, Jeffrey. 2000. Introductory Econometrics- A Modern Approach. South-Western College Publishing. 最受欢迎的见解 1.matlab使用贝叶斯优化的深度学习 2.matlab贝叶斯隐马尔可夫hmm模型实现 3.R语言Gibbs抽样的贝叶斯简单线性回归仿真 4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归 5.R语言中的Stan概率编程MCMC采样的贝叶斯模型 6.Python用PyMC3实现贝叶斯线性回归模型 7.R语言使用贝叶斯 层次模型进行空间数据分析 8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型 9.matlab贝叶斯隐马尔可夫hmm模型实现 R语言贝叶斯线性回归和多元线性回归构建工资预测模型 标签:构造 引入 dia square 定义 规范 median 推理 命令 原文地址:https://www.cnblogs.com/tecdat/p/14758116.html原文链接:http://tecdat.cn/?p=21641
工资模型
加载包
数据
变量
描述
wage
周收入
hours
每周平均工作时间
IQ
智商得分
kww
工作知识分数
educ
受教育年限
exper
工作经验
tenure
在现任雇主工作多年
age
年龄
married
= 1,如果已婚
black
= 1(如果为黑人)
south
= 1,如果住在南部
urban
= 1,如果居住在都市中
sibs
兄弟姐妹数
brthord
出生顺序
meduc
母亲的教育程度
feduc
父亲的学历
lwage
工资的自然对数
探索数据
summary(wage)
练习:排除工资和工龄,选择另外两个你认为可以很好预测工资的变量。使用适当的图来形象化他们与工资的关系。
受教育程度和工作小时数似乎是工人工资的良好预测因素。
ggplot(data = wage, aes(y=wage, x=educ))+geom_point()
简单的线性回归
m_wage_iq$coefficients
## [1] 384.7667
summary(m_wage_educ)$sigma
## [1] 382.3203
变量转换
m_lwage_iq = lm(lwage ~ iq, data = wage)
## [1] 0.007103173 0.010511141
## [1] 8.767568
多元线性回归
默认情况下,lm函数执行完整的案例分析,因此它会删除一个或多个预测变量中缺少(NA)值的观察值。
## [1] 0.09561888
BIC(m_lwage_full)
## [1] 586.3732
m_lwage_nobrthord = lm(lwage ~ . -wage -brthord, data = na.omit(wage))
## [1] 582.4815
feduc
## [1] 581.4031
BIC(m_lwage_feduc)
## [1] 580.9743
BIC(m_lwage_meduc)
## [1] 582.3722
贝叶斯模型平均
summary(bma_lwage)
在模型平均法下,还可以可视化系数的后验分布。我们将智商系数的后验分布绘制如下。
wage_red = wage %>% dplyr::select(-sibs, -brthord, -meduc, -feduc)
bma_lwage_full
预测
BAS预测
predict(bma_lwage, estimator="BPM")
predict(bma_lwage, estimator="MPM")
练习:使用简化数据,最佳预测模型、中位概率模型和最高后验概率模型中包含哪些协变量?
让我们来看看BPM模型中哪些特征会影响最高工资。
如果使用BMA,区间是
参考文献
文章标题:R语言贝叶斯线性回归和多元线性回归构建工资预测模型
文章链接:http://soscw.com/index.php/essay/89351.html