拓端tecdat|R语言回归和主成分PCA 回归交叉验证分析预测城市犯罪率
原文链接:http://tecdat.cn/?p=24671
原文出处:拓端数据部落公众号
在本文中,我解释了基本回归,并介绍了主成分分析 (PCA) 使用回归来预测城市中观察到的犯罪率。我还应用 PCA 创建了一个回归模型,用于使用前几个主成分对相同的犯罪数据进行建模。最后,我对两种模型的结果进行了比较,看看哪个表现更好。
回归有助于显示因素和因变量之间的关系,它基本上回答了两种类型的问题;1. 吸烟对癌症的影响 2. 未来会发生什么?(例如)三年后的油价。
数据
犯罪学家对惩罚制度对犯罪率的影响感兴趣。已使用汇总数据对此进行了研究。数据集包含以下列:
变量描述
M: 14-24岁的男性在总人口中的百分比
So: 南方州的指标变量
Ed: 25岁或以上人口的平均受教育年限
Po1: 年警察保护的人均支出
Po2: 去年警察保护的人均支出
LF: 14-24岁年龄组的城市男性平民的劳动力参与率
M.F: 每100名女性的男性人数
Pop: 国家人口,以十万计
NW: 非白人在人口中的百分比
U1: 14-24岁城市男性的失业率
U2: 城市男性35-39岁的失业率
财富财富:可转让资产或家庭收入的中值
收入不平等:收入低于中位数一半的家庭的百分比
入狱概率:入狱人数与犯罪人数的比率
时间: 罪犯在首次获释前在国家监狱中服刑的平均时间(月)。
犯罪: 犯罪率:每10万人口中的犯罪数量
我们将数据集导入R环境
read("crim.txt")
检查变量是否正确
head(crim) #所有的变量都是预测因素,只有犯罪是因变量。
我们正在尝试使用整个数据集来构建回归模型来进行预测。创建简单的回归模型
summary(model)
使用数据框架来手动创建我们的数据点测试,然后在测试数据上运行一些预测。
primodl <- predict(mdl, test)primodl
输出值不到下一个最低城市的犯罪率的一半,所以我将创建第二个模型,观察它的输出并画出比较。
创建第二个模型
sumry(son_mel)
我们现在可以对第二个模型进行预测了
pic_secn_mel<- prict(sed_odel, tst)pic_secn_mel
与第一个模型相比,其结果明显更高。所以,它更合理。
交叉验证
我们可以做一个5折的交叉验证。
cv(se,m=5)
我们可以得到数据和其平均值之间的平方差的总和
sum((Cm- mean(ui))^2)
我们可以得到模型1、模型2和交叉验证的平方残差之和
SSrl <- sum(res^2)
SSre <- sum(resi^2)
res <- "ms")*nrow
我们也可以计算出3个模型的R平方值
1 -res/tot
1-res/SS
1-res/SS
获得的R平方值表明我们的拟合质量很好。对于惩罚性回归,有必要对数据进行标准化,以确保所有的特征都受到同等的惩罚。但在线性回归的情况下,这其实并不重要。它将只是转移截距和系数,但相关关系保持不变。
PCA
PCA是一种用于描述变化的方法,显示数据集中的强相关性,从而使其易于探索和可视化数据。PCA通过以下方式对数据进行转换:(1)去除数据中的相关关系(2)按重要性对坐标进行排序。
我们可以检查crime数据的预测变量之间的相关性。
pairs(srm,c("o",Ed"o"))
对数据集中的所有预测变量应用PCA。请注意,为了获得更准确的PCA结果,需要对这些变量进行标准化。
sumr(pca)
rotan #PCA旋转是特征向量的矩阵
pca
然后,我们可以通过绘制每个主成分的方差来决定在 "前几个 "主成分中使用多少个主成分。
plotpcaye ="ie")
要确定使用多少PC?我们可以尝试使用5个主成分作为开始。
pcax[,1:5]
使用前五个PC,我们可以继续建立一个线性回归模型。
summary(mdPCA)
为了根据原始变量重建模型,首先我们从PCA线性回归模型中获得系数,之后通过使用主成分的特征向量将PCA成分系数转化为原始变量的系数。
PCA线性回归的系数
coefficients[1]
coefficients[2:6]beta0 #截距
转换
rot %*% betat(alpha) # 标准化的数据系数
获得未标准化数据的系数。
ahusl <- ahs / sppy(u[,1:15],sd)ba0cl <- ea0 - sum/sapply(sd))
未标准化数据的系数
t(alas_sled)be0uced
#我们可以得到我们的未标准化数据的估计值as.marx %*% unscle + beta0aled
最后,为了比较使用PCA的模型和使用回归的模型的质量,我们必须计算R-squared和调整后的R-squared,并将这些数值与前一个模型的数值进行比较。调整后的R平方考虑了模型中预测因子的数量。
Rsquared <- 1 - SSE/SST # R-squared
使用所有变量的无PCA的先前线性回归模型
summary(dlLR)
R-squared 和调整后的 R-squared 值都较高,这表明至少对于使用前五个主成分的模型,具有 PCA 的线性回归模型优于没有 PCA 的线性回归模型。为了检查使用不同数量的前 n 个主成分的线性回归模型是否产生了更好的拟合模型,我们可以使用循环并进一步进行交叉验证。
最受欢迎的见解
1.R语言多元Logistic逻辑回归 应用案例
2.面板平滑转移回归(PSTR)分析案例实现
3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
4.R语言泊松Poisson回归模型分析案例
5.R语言混合效应逻辑回归Logistic模型分析肺癌
6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
7.R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
8.python用线性回归预测股票价格
9.R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测
拓端tecdat|R语言回归和主成分PCA 回归交叉验证分析预测城市犯罪率相关推荐
- 拓端tecdat|R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险
最近我们被客户要求撰写关于冠心病风险的研究报告,包括一些图形和统计输出. 相关视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险 逻辑回归Logistic模型原理和R语言分类预测冠 ...
- 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测
最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...
- 拓端tecdat|R语言线性回归和时间序列分析北京房价影响因素可视化案例
最近我们被客户要求撰写关于北京房价影响因素的研究报告,包括一些图形和统计输出. 目的 房价有关的数据可能反映了中国近年来的变化: 人们得到更多的资源(薪水),期望有更好的房子 人口众多 独生子女政策: ...
- 拓端tecdat|R语言向量误差修正模型 (VECMs)分析长期利率和通胀率影响关系
最近我们被客户要求撰写关于向量误差修正模型的研究报告,包括一些图形和统计输出. 向量自回归模型估计的先决条件之一是被分析的时间序列是平稳的.但是,经济理论认为,经济变量之间在水平上存在着均衡关系,可以 ...
- R语言第八讲 评估模型之交叉验证法分析案例
题目 评估Auto数据集上拟合多个线性模型所产生的测试错误率.Auto数据集是存在与ISLR程序包中的一个摩托车相关数据的数据集,读者可自行下载ISLR程序包,并将Auto数据集加载. 相关资料 交叉 ...
- 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化...
全文链接:http://tecdat.cn/?p=22262 在讨论分类时,我们经常分析二维数据(一个自变量,一个因变量)(点击文末"阅读原文"获取完整代码数据). 但在实际生活中 ...
- R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化
概述和定义 在本文中,我们将考虑一些线性模型的替代拟合方法,除了通常的 普通最小二乘法.这些替代方法有时可以提供更好的预测准确性和模型可解释性.最近我们被客户要求撰写关于模型选择的研究报告,包括一些 ...
- 拓端tecdat荣获2022年度51CTO博主之星
相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...
- R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标
全文下载链接:http://tecdat.cn/?p=27515 建立重庆市经济指标发展体系,以重庆市一小时经济圈作为样本,运用因子分析方法进行实证分析,在借鉴了相关评价理论和评价方法的基础上,本文提 ...
- 数据分享|R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标...
原文链接:http://tecdat.cn/?p=27515 建立重庆市经济指标发展体系,以重庆市一小时经济圈作为样本,运用因子分析方法进行实证分析,在借鉴了相关评价理论和评价方法的基础上,本文提取 ...
最新文章
- matlab length_《Matlab - Robotics System Toolbox》学习笔记(2)
- 艾宾浩斯记忆表格excel_好的记忆方法是一切学习的关键(艾宾浩斯记忆法)
- JDBC+Servlet+JSP整合开发之25.JSP动作元素
- One order里user status和system status的mapping逻辑
- 简单链接Simplelink 传感器标签SensorTag
- Chrome浏览器调试踩坑
- pytorch torch.nn.LSTM
- iOS 之如何利用 RunLoop 原理去监控卡顿?
- 环境变量PATH cp命令 mv命令 文档查看cat/more/less/head/tail
- ideal pom文件安装到maven库中_不装 maven 直接使用 IntelliJ 的插件来把本地 jar 包加入到 maven 仓库...
- 游戏必备组件有哪些_微信广告将升级小程序、小游戏开发者收入方案
- gradle入门教程
- 小达同学软件测试第三讲
- rsa私钥 txt转化为pem格式
- \node_modules\node-sass\build\src\libsass.vcxproj(20,3): error MSB4019: 未找到导入的项目“D:\Microsoft.Cpp.De
- 小程序如何加入企业微信群聊
- Python 3 字符串 maketrans( ) 方法
- 怎样复制粘贴windows命令行中的内容 .
- android 高仿糯米团购 摇一摇 摇奖 效果
- 使用斯凯平台图片缩放函数注意的地方
热门文章
- 知名应用背后的第三方开源项目
- CentOS 禁用Ctrl+Alt+Del重启功能
- node 学习 ——模块导出
- linkedlist 最难题 Insert into a Cyclic Sorted List
- linux 文件与目录操作
- Linux文件系统Ext2,Ext3,Ext4性能大比拼
- c# 读取写入excel单元格(包括对excel的一些基本操作)
- 2月21日 CVST工具箱模块仿真与图像处理(一)
- jdk list接口源码解析
- LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”