暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据

拓端数据部落 2022-10-12
523

全文链接:http://tecdat.cn/?p=29277



一些标准的图形工具可以极大地帮助理解数据集并评估所建议模型的质量。


学生考试成绩

例如,数据集包含600个观察结果,用于国家统计教育中心对学生进行的一项非常大的研究查看文末了解数据免费获取方式。数据集中的一些变量包括:

•性别:性别男性或女性。

•种族:种族或民族,具有西班牙裔,亚洲人,非洲裔美国人,白人的水平。

•学校类型,公立和私立。

•轨迹:控制位点,一个连续的协变量,指示受试者对影响他们的事件的自我感知控制程度(更高=更感知的控制)

•概念:自我概念,反映受试者自我感知的学术能力的连续协变量(更高=更多的自我感知能力)。

•动机,一个连续的协变量(更高=更多的自我感知的动机)。

•数学:标准化的数学考试成绩。

• 阅读:标准化阅读测试成绩。

要基本了解数据集中的变量,我们可以使用摘要命令:

summary(hsb)

然而,由于变量太少,我们实际上可以用成对命令把所有的连续变量绘制在一起。

图中显示,虽然动机是一个连续变量,但它只具有四个类别。这很可能是因为学生被要求在4个点的量表上评估他们的自我激励(0,0.33,0.66,和1)。另外,数学和任何一个连续预测因素之间最强的关联似乎是与阅读。


点击标题查阅往期内容


【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享


左右滑动查看更多


01

02

03

04



anova(M1, M2)

有两个标准图来检查M1是否似乎违反了线性模型的假设。第一种是绘制残差ei = yi - x ′ iβˆ作为预测值的函数ˆyi = x ′ iβˆ。除了通常的残差之外,还有两种类型的残差经常被考虑。

1. 标准化残差:ri = ei σˆ。这些残差是单位的

2. 研究性残差:di = ei σˆ √ 1 - hi

这样,如果模型是真实的,残差大约是N(0,1)。

图1显示了残差与M1的拟合值之间的关系,使用的是通常的残差和 studentized残差的一个版本,ei/ √ 1 - hi 。其他统计学家更喜欢在标准化的尺度上绘制残差(除以σˆ),这样Y轴上的单位对每张残差图都有相同的解释。

plot(predict(M1), res, pch = 21, bg = "black"cex = cexcex.axis = cex,ex)

由于σ2(1-hi)是一个方差,我们必须有(1-hi)>0=⇒hi<1=⇒(1-hi)<1。因此,studentized残差ei/ √ 1 - hi在规模上大于原始的ei。

通过绘制残差与理论上的正态分布的直方图,可以更容易地看到这一点,如图所示。

hist(res/sigma.hat, breaks = 50freq = FALSE, cex.axis = cex,

对于这个残差图,我个人更喜欢使用标准化的残差,即除以ˆσ。这是因为我更容易在N(0,1)上发现大的残差值(标准正态在±2之间有95%的机会,在±3之间有99.7%的机会)。图2证实了残差略微偏向负值,表明需要进一步建模。

线性预测模型

回顾一下满意度数据集,即病人自我报告对在医院接受的护理质量的满意度,由年龄、压力和病情的严重程度来预测。

相关视频



下面是潜在模型之间的一些比较。

anova(lm(Satisfaction ~ Age

anova(lm(Satisfaction ~ Age, data = satis),

anova(lm(Satisfaction ~ Age + Severity, data = satis),

根据上面的测试结果,我们可以决定考虑使用年龄和压力的模型,因为它的F统计量比年龄和严重程度稍显重要。然而,这种方法会增加选择错误模型的机会,正如下面的模拟实验所显示的那样。

pval <- 2*pt(abs(beta.hat)/sqrt(diag(vcov(M))\[-1\]),df = n-3, lower.tail = FALSE) # pvaluessim.out\[ii,\] <- round(c(beta.hat\[1\], pval\[1\], beta.hat\[2\], pval\[2\]),2)}sim.out

在10次实验运行中,只有两次对两个协变量都有显著的P值,但对这些协变量的估计却有很大偏差。事实上,其中两个复制甚至把协变量的符号弄错了。虽然这个例子并不现实(协变量之间的相关性几乎不可能达到0.999),但它说明了这样一个事实:当协变量高度相关时,回归很难弄清y的变化是由一个协变量还是另一个协变量引起的。换句话说,βˆ的估计值从一个随机样本到另一个随机样本会有很大的变化。这种现象被称为方差膨胀

衡量预测因子之间的共线性的一个简单方法是所谓的方差膨胀因子(VIF)。

其中C是协变量之间的样本相关矩阵。

下面的R代码说明了VIF的两种形式之间的平等。

VIF <- diag(solve(cor(X)))VIF

names(satis.star) <- c("Satisfaction"paste0(names(satis)\[-1\]".star"))head(satis.star)

diag(vcov(M.orig))\["Severity"\]/diag(vcov(M.trans))\["Severity.star"\]

VIF\["Severity"\]

严重程度和压力的方差膨胀系数为2.00,这两个变量之间的相关度为0.67。相比之下,模拟实验中的方差膨胀系数是1/(1-.9992)≈500。作为一条经验法则,VIF大于10是值得关注的。

离群值

简单地说,离群值是指与其他观测值相比具有异常大的残差。然而,为了提高模型的拟合度而删除这些观测值的情况比较少见,因为出错的几乎总是模型,而不是数据。也就是说,异常值通常是模型中遗漏了重要协变量的结果。例如,数据集包含了105个世界国家的婴儿死亡率和人均收入的数据。数据集中的变量是

- 收入:以元计的人均收入。

- 婴儿:每1000个活产的婴儿死亡率。

- 地区:大陆,有非洲、美洲、亚洲、欧洲等级别。

- 石油:石油出口国,级别为无、有。 

对数尺度的线性模型适合于数据,残差与拟合值绘制在图3中。

coef(M) # 系数

as.character(formula(M))\[c(2,1,3)\]), collapse = " "), # 模型xlab = "Predicted Log-Infant Mortality",

这张图上的异常点是最上面的三角形,它对应的是沙特阿拉伯。目前还不清楚为什么沙特阿拉伯的婴儿死亡率比模型预测的要高很多。一种可能性是,它的石油产量太高,以至于歪曲了平均收入。在这种情况下,我们有以下选择。

1. 将沙特阿拉伯排除在分析之外,承认我们并不完全知道原因(不推荐)。

2. 将所有9个产油国排除在分析之外,并说明我们的预测只针对非产油国。

3.将沙特阿拉伯排除在外,并评估这对我们的分析有何影响。

树木的针叶产生的阴凉面积

数据集包含以下关于35种针叶树的变量。- 针叶面积。树木的针叶产生的阴凉面积 - 高度:树木的高度 - 树干尺寸。树的直径 以下模型适合于该数据。

X <- model.matrix(M)H <- X %*% solve(crossprod(X), t(X)) # HAT matrixhead(diag(H))

range(h - diag(H))

在这四种类型的残差中,每一种都把大残差放大得越来越多。为了衡量每个观测点的总体影响,图中的库克距离与杠杆率作了对比

n <- nrow(lforest)hbar <- p/n # 平均杠杆率abline(v = 2*hbar, col = "gray60", lty = 2) # 2x平均杠杆率

其中一个观测值的库克距离几乎是其他观测值的3倍以上(红色),而其中的e个观测值的平均杠杆率是两倍(蓝色)。为了了解为什么这些观测值有很高的杠杆率,我们可以看一下所有协变量的配对图(在这种情况下,这只是高度和树干尺寸)。

我们可以看到,其中三个标记点(有影响力的点和两个高杠杆点)的TrunkSize值非常大(记得这些值是按对数比例绘制的)。剩下的那个高杠杆点的树干尺寸相对于其高度来说非常小。至于为什么只有三棵树中树干尺寸最大的一棵被标记为离群点,我们可以将NeedleArea与每个协变量(包括实际值和预测值)作对比。为了进行比较,预测是在所有观测值和省略一个观测值的情况下进行的:要么是有影响力的观测值,要么是有最高杠杆的观测值。

# 用省略的值进行预测omit.ind <- c(which(inf.ind), # 最有影响力的which.max(h)) # 最高杠杆率which(infl.ind)中的错误:"which "的参数不符合逻辑names(omit.ind) <- c("inf""lev")omit.ind

yobs <- lforest\[, "NeedleArea"\] # 观察值Mf <- lm(NeedleArea ~ Height + TrunkSizedata = lforest) # 所有观测值for(jj in 1:length(opt.ind)) {# 用省略的观察值建立模型Mo <- lm(NeedleArea ~ Height + TrunkSize,data = lforestsubset = -omit.ind\[jj\])yfito <- predict(Monewdata = lforest) # 所有观测值的拟合值for(ii in c("Height", "TrunkSize")) {

我们可以看到,当移除有影响的观测值时,有无遗漏的预测值之间的差异更加明显。这在针孔面积与树干尺寸的图中最为明显,这是对具有高杠杆作用的三个点和具有高影响的点的预测。在这个特殊的案例中,我们确定具有最大树干尺寸的三棵树的测量是不正确的,它们可以从分析中移除。


数据获取


在公众号后台回复“考试”,可免费获取完整数据。




点击文末“阅读原文”

获取全文完整代码数据资料


本文选自《数据分享|R语言回归模型诊断、离群值分析学生考试成绩、病人医护质量满意度、婴儿死亡率和人均收入、针叶树荫面积数据》。



本文中分析的数据分享到会员群,扫描下面二维码即可加群!

点击标题查阅往期内容

R语言基于Bootstrap的线性回归预测置信区间估计方法分析汽车制动距离|数据分享
使用R语言进行多项式回归、非线性回归模型曲线拟合
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
R语言多元线性回归、ARIMA分析美国不同候选人对经济GDP时间序列影响
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题
R语言用线性回归模型预测空气质量臭氧数据
数据分享|R语言零膨胀泊松回归ZERO-INFLATED POISSON(ZIP)模型分析露营钓鱼数据实例估计IRR和OR
R使用LASSO回归预测股票收益
R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
Matlab中的偏最小二乘法(PLS)回归模型,离群点检测和变量选择
R语言多元Logistic逻辑回归 应用案例
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
数据分享|R语言用主成分分析(PCA)PCR回归进行预测汽车购买信息可视化
MCMC的rstan贝叶斯回归模型和标准线性回归模型比较
数据分享|R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化
R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
spss modeler用决策树神经网络预测ST的股票
R语言中使用线性模型、回归决策树自动组合特征因子水平
R语言中自编基尼系数的CART回归决策树的实现
R语言用rle,svm和rpart决策树进行时间序列预测
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言ISLR工资数据进行多项式回归和样条回归分析
R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
如何用R语言在机器学习中建立集成模型?
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
在python 深度学习Keras中计算神经网络集成模型
R语言ARIMA集成模型预测时间序列分析
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言基于Bootstrap的线性回归预测置信区间估计方法
R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
matlab使用分位数随机森林(QRF)回归树检测异常值



文章转载自拓端数据部落,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论