多元统计分析——基于R语言的单车使用情况可视化分析

news2024/12/24 8:19:21
注:基于R语言的单车使用情况可视化分析为实验记录,存在不足,自行改进。

一、提出问题(要解决或分析的问题)

1 、用户对共享单车的使用习惯,环境对共享单车运营带来的影响?
2 、共享单车的租赁量主要与哪些环境有关?

二、数据来源及选取方法(数据完整可靠)

        数据说明:所使用的数据是共享单车运营数据,记录了共享单车租赁的时间、地点、环境(包 括季节,温度,湿度)等数据。
        数据来源: https://www.kaggle.com/c/bike-sharing-demand/data

三、数据可视化分析

3.1 数据基本信息描述(图或表)

datetime ( 时间 ): hourly date + timestamp
Season( 季节 ) : 1 = spring, 2 = summer, 3 = fall, 4 = winter
holiday ( 是否是周末 ): whether the day is considered a holiday
workingday ( 是否是工作日 ):whether the day is neither a weekend nor holiday
weather ( 天气 ): 1: Clear, Few clouds, Partly cloudy, Partly cloudy
                        2: Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist
                        3: Light Snow, Light Rain + Thunderstorm +Scattered clouds,Light Rain+Scattered clouds
                        4: Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog
temp ( 温度 ) : temperature in Celsius
atemp ( 最高温度 ) :"feels like" temperature in Celsius
humidity ( 湿度 ): relative humidity
windspeed ( 风速 ):wind speed
casual ( 损坏车辆 ) : number of non-registered user rentals initiated
registered ( 登记使用车辆 ) :number of registered user rentals initiated
count ( 总租赁车辆数 ):number of total rentals

3.2.采用的多元分析方法(一种或多种,必须理论阐述该研究方法的基本原理)

3.2.1采用主成分分析        

        主成分分析(principal components analysis )也称主分量分析,是由霍特林于 1933 年首次提出的。主 成分分析是利用降维的思想,在损失很少信息的前提下,把多个指标转化为几个综合指标的多元统计方法。
        简单地说,主成分分析就是在研究问题选取的指标比较多、研究的问题比较复杂时,可以把原来研究 的指标做几个线性组合,即主成分,来解释原来变量绝大对数信息的一种多元统计法。

3.2.2主成分分析的意义

        通过主成分分析,可以从事物间错综复杂的关系中找出一些主要成分,从而能有效利用大量统计数据 进行定量分析,揭示变量之间的内在关系,得到对事物特征发展规律的一些深层次的启发,把研究工作引向深入。

3.3数据分析结果及解释(图或表,必须含分析解释)

(1)读取数据
data <- read.csv("C:\\Users\\leglon\\Desktop\\假期r\\train(1).csv", header = TRUE,stringsAsFactors = F)
(2)缺失值处理
#缺失值处理
na.omit(data,cols,invert)

 

(3) 从data中读取温度、最高温度、湿度、风速、损坏使用数据、登记使用数据,租赁总数据 
# 从data中读取温度、最高温度、湿度、风速、损坏使用数据、登记使用数据,租赁总数据
suppressWarnings(temperature <- as.numeric(data[,6]))
suppressWarnings(atemp <- as.numeric(data[,7]))
suppressWarnings(humidity <- as.numeric(data[,8]))
suppressWarnings(windspeed <- as.numeric(data[,9]))
suppressWarnings(casual <- as.numeric(data[,10]))
suppressWarnings(register <- as.numeric(data[,11]))
suppressWarnings(count <- as.numeric(data[,12]))
 (4)求温度、湿度和风速的均值与标准差
# 温度的均值和标准差
mean(temperature, na.rm = T)
sd(temperature, na.rm = T)

# 湿度的均值和标准差
mean(humidity, na.rm = T)
sd(humidity, na.rm = T)

# 风速的均值和标准差
mean(windspeed, na.rm = T)
sd(windspeed, na.rm = T)
(5)可视化湿度与租赁量关系图
plot(x = humidity,y=count,xlab="湿度",ylab="租赁量",main="湿度与租赁量关系图",cex=1,pch=1)
        
        由湿度-租赁量散点图可知,湿度在 30-60 区间内,租赁量较多,湿度低于 20 ,且大于 90
租赁量较少。
 (6)可视化温度与租赁量关系图
plot(x=temperature,y=count,xlab="温度",ylab="租赁量",main="温度与租赁量关系图",cex=1,pch=1)
        
    
        由温度-租赁量散点图可知,当温度在 15-25 之间时,共享单车租赁量较高; 当温度在 15 度以下时,温度越低,租赁量越低;当温度较高时,仍能保持一定的租赁量。
(7)查看拟合效果
shapiro.test(temperature[0:5000])
#W的值越接近1就越表明数据和正态分布拟合得越好,可以认为样本数据服从正态分布.

        w值越接近1就越表明数据和正态分布拟合得越好,可以认为样本数据服从正态分布,从图中可以看出w的值为0.97539,服从正态分布。

(8)可视化工作日与休息日单车使用情况
hours = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,22, 23, 24)

count_workday = c(36.73225806451613, 16.003236245954692, 8.436065573770492, 
                  4.892733564013841, 5.363636363636363, 24.529032258064515,
                  102.57741935483871, 290.69032258064516, 479.9451612903226,
                  242.29354838709676, 133.59677419354838, 157.0193548387097, 
                  199.34726688102893, 197.16077170418006, 180.36655948553056,
                  198.62700964630224, 292.4662379421222, 529.2090032154341,
                  495.4855305466238, 349.2829581993569, 249.36334405144694, 
                  184.85530546623795, 138.34405144694534, 88.9967845659164)
count_weekday = c(94.48965517241379, 71.9103448275862, 53.74825174825175,
                  25.53472222222222, 8.544827586206896, 9.373239436619718,
                  19.99310344827586, 47.26896551724138, 112.2551724137931, 
                  177.9241379310345, 263.80689655172415, 325.3862068965517, 
                  379.11034482758623, 387.82068965517243, 378.7310344827586, 
                  373.70344827586206, 367.64827586206894, 339.1241379310345, 
                  292.24827586206897, 242.3448275862069, 183.80689655172415, 
                  148.73793103448276, 123.35172413793103, 90.60689655172413)

# 绘制租赁量和时刻的柱形图
barplot(height = count_workday, xlab = "时刻", 
        ylab = "租赁量", main = "工作日使用情况", names.arg = hours)
#由工作日-时刻租赁柱状图/饼状图可知,工作日的共享单车使用高峰期集中在上午7-10点
#和下午18-20点,与上下班交通高峰期正好重合;
barplot(height = count_weekday, xlab = "时刻",
        ylab = "租赁量", main = "休息日使用情况", names.arg = hours)
# 绘制租赁量和时刻的饼状图
pie(x = count_workday, labels = hours, main = "工作日使用情况", radius = 1)
pie(x = count_weekday, labels = hours, main = "休息日使用情况", radius = 1)
#由休息日-时刻租赁柱状图/饼状图可知,休息日的共享单车使用集中在11-19点;

        
        由工作日-时刻租赁柱状图可知,工作日的共享单车使用高峰期集中在上午 7-10 点和下午 18-20 点,与上下班交通高峰期正好重合。饼状图为工作日不同时间段共享单车使用占比情况。

    
        由休息日-时刻租赁柱状图可知,休息日的共享单车使用集中在 11-19 点。饼状图为休息日不同时间段共享单车使用占比情况

(9)做主成分可视化分析
X = data.frame(
  x1=c(temperature),
  x2=c(atemp),
  x3=c(humidity),
  x4=c(windspeed),
  x5=c(casual),
  x6=c(register)
)
str(X)
cor(X) #计算相关矩阵
#### 作主成分分析
PCA=princomp(X,cor = T)
PCA
PCA$loadings  #主成分负荷
eigen(cor(X)) #计算相关矩阵的特征值
PCA$scores   #主成分得分
summary(PCA,loadings = TRUE)
screeplot(PCA,type='lines')
        
      
  由于前三个主成分的累积贡献了已达到 82.04% ,所以另外三个主成分可以舍去,达到降维 目的。将温度( temp )、最高温度( atemp )和湿度( humidity )作为三个主要成分,可以 认为共享单车的租赁量主要与这三个环境有关。

3.4作回归诊断图

#### 将主成分作线性回归
lm.sol<-lm(count~temperature+atemp+humidity,data=X)
lm.sol$coefficients  #输出估计的回归系数
summary(lm.sol)
#回归方程通过了回归参数的检验与回归方程的检验,得到回归方程为:
#Y = 178.32869+3.08058*x1+5.26462*x2-2.80534*x3
#回归诊断
influence.measures(lm.sol)
op<-par(mfrow=c(2,2),mar=0.4+c(4,4,1,1),oma=c(0,0,2,0))
plot(lm.sol,1:4)
par(op)

四、讨论和小结:联系实际,分析问题(对应第一部分提出的问题)

1 、用户对共享单车的使用习惯,环境对共享单车运营带来的影响?
        由工作日- 时刻租赁柱状图可知,工作日的共享单车使用高峰期集中在上午 7-10 点和下午 18-20 点,与上下 班交通高峰期正好重合; 由休息日- 时刻租赁柱状图可知,休息日的共享单车使用集中在 11-19 点; 温度和湿度都会对共享单车的使用带来影响,由温度- 租赁量散点图可知,当温度在 15-25 之间时,共享单 车租赁量较高;当温度在 15 度以下时,温度越低,租赁量越低;当温度较高时,仍能保持一定的租赁量; 由湿度- 租赁量散点图可知,湿度在 30-60 区间内,租赁量较多,湿度低于 20 ,且大于 90 ,租赁量较少。
2 、共享单车的租赁量主要与哪些环境有关?
        由碎石图可知,由于前三个主成分的累积贡献了已达到 82.04% ,所以另外三个主成分可以舍去,达到降维 目的。将温度(temp )、最高温度( atemp )和湿度( humidity )作为三个主要成分,可以认为共享单车的 租赁量主要与这三个环境有关。

五、源代码

# 读取数据
data <- read.csv("C:\\Users\\leglon\\Desktop\\假期r\\train(1).csv", header = TRUE,stringsAsFactors = F)
#缺失值处理
na.omit(data,cols,invert)
# 从data中读取温度、最高温度、湿度、风速、损坏使用数据、登记使用数据,租赁总数据
suppressWarnings(temperature <- as.numeric(data[,6]))
suppressWarnings(atemp <- as.numeric(data[,7]))
suppressWarnings(humidity <- as.numeric(data[,8]))
suppressWarnings(windspeed <- as.numeric(data[,9]))
suppressWarnings(casual <- as.numeric(data[,10]))
suppressWarnings(register <- as.numeric(data[,11]))
suppressWarnings(count <- as.numeric(data[,12]))

# 温度的均值和标准差
mean(temperature, na.rm = T)
sd(temperature, na.rm = T)

# 湿度的均值和标准差
mean(humidity, na.rm = T)
sd(humidity, na.rm = T)

# 风速的均值和标准差
mean(windspeed, na.rm = T)
sd(windspeed, na.rm = T)

plot(x = humidity,y=count,xlab="湿度",ylab="租赁量",main="湿度与租赁量关系图",cex=1,pch=1)
plot(x=temperature,y=count,xlab="温度",ylab="租赁量",main="温度与租赁量关系图",cex=1,pch=1)
#由温度-租赁量散点图可知,当温度在15-25之间时,共享单车租赁量较高;
#当温度在15度以下时,温度越低,租赁量越低;当温度较高时,仍能保持一定的租赁量;
shapiro.test(temperature[0:5000])
#W的值越接近1就越表明数据和正态分布拟合得越好,可以认为样本数据服从正态分布.
hours = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,22, 23, 24)

count_workday = c(36.73225806451613, 16.003236245954692, 8.436065573770492, 
                  4.892733564013841, 5.363636363636363, 24.529032258064515,
                  102.57741935483871, 290.69032258064516, 479.9451612903226,
                  242.29354838709676, 133.59677419354838, 157.0193548387097, 
                  199.34726688102893, 197.16077170418006, 180.36655948553056,
                  198.62700964630224, 292.4662379421222, 529.2090032154341,
                  495.4855305466238, 349.2829581993569, 249.36334405144694, 
                  184.85530546623795, 138.34405144694534, 88.9967845659164)
count_weekday = c(94.48965517241379, 71.9103448275862, 53.74825174825175,
                  25.53472222222222, 8.544827586206896, 9.373239436619718,
                  19.99310344827586, 47.26896551724138, 112.2551724137931, 
                  177.9241379310345, 263.80689655172415, 325.3862068965517, 
                  379.11034482758623, 387.82068965517243, 378.7310344827586, 
                  373.70344827586206, 367.64827586206894, 339.1241379310345, 
                  292.24827586206897, 242.3448275862069, 183.80689655172415, 
                  148.73793103448276, 123.35172413793103, 90.60689655172413)

# 绘制租赁量和时刻的柱形图
barplot(height = count_workday, xlab = "时刻", 
        ylab = "租赁量", main = "工作日使用情况", names.arg = hours)
#由工作日-时刻租赁柱状图/饼状图可知,工作日的共享单车使用高峰期集中在上午7-10点
#和下午18-20点,与上下班交通高峰期正好重合;
barplot(height = count_weekday, xlab = "时刻",
        ylab = "租赁量", main = "休息日使用情况", names.arg = hours)
# 绘制租赁量和时刻的饼状图
pie(x = count_workday, labels = hours, main = "工作日使用情况", radius = 1)
pie(x = count_weekday, labels = hours, main = "休息日使用情况", radius = 1)
#由休息日-时刻租赁柱状图/饼状图可知,休息日的共享单车使用集中在11-19点;

X = data.frame(
  x1=c(temperature),
  x2=c(atemp),
  x3=c(humidity),
  x4=c(windspeed),
  x5=c(casual),
  x6=c(register)
)
str(X)
cor(X) #计算相关矩阵
#### 作主成分分析
PCA=princomp(X,cor = T)
PCA
PCA$loadings  #主成分负荷
eigen(cor(X)) #计算相关矩阵的特征值
PCA$scores   #主成分得分
summary(PCA,loadings = TRUE)
screeplot(PCA,type='lines')
#z1 = 0.540*X1 + 0.535*X2 - 0.211*X3 - 0.471*X5 + 0.389*X6
#z2 = 0.308*X1 + 0.334*X2 + 0.612*X3 - 0.574*X4 - 0.186*X5 - 0.233*X6
#z3 = 0.301*X1 + 0.273*X2 + 0.684*X4 - 0.286*X5 - 0.531*X6
#由于前三个主成分的累积贡献了已达到82.04%,所以另外三个主成分可以舍去,
#达到降维目的。

#### 将主成分作线性回归
lm.sol<-lm(count~temperature+atemp+humidity,data=X)
lm.sol$coefficients  #输出估计的回归系数
summary(lm.sol)
#回归方程通过了回归参数的检验与回归方程的检验,得到回归方程为:
#Y = 178.32869+3.08058*x1+5.26462*x2-2.80534*x3
#回归诊断
influence.measures(lm.sol)
op<-par(mfrow=c(2,2),mar=0.4+c(4,4,1,1),oma=c(0,0,2,0))
plot(lm.sol,1:4)
par(op)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【北京仁爱堂】痉挛性斜颈的健康指导

痉挛性斜颈是一种肌肉紧张异常症&#xff0c;仅限于颈部肌肉的肌张力障碍。当患者患有痉挛性斜颈&#xff0c;会表现为颈部肌肉间歇性或持续不规则的收缩&#xff0c;因此患者的头颈部会出现扭曲、歪斜、姿势异常等症状&#xff0c;多发于30-40岁左右中年人 一、 痉挛性斜颈的5…

mac和windows上安装nvm管理node版本

NVM 是 node version manager 的缩写&#xff0c;它是一个用来管理电脑上 node 版本的命令行工具&#xff0c;在日常前端开发中是一个跟 node 一样会经常用到的工具&#xff0c;可以很方便的让我们快速切换不同的node版本。 mac 上安装 nvm 1、下载安装 nvm 下载安装可以直…

【机器学习】逻辑回归原理(极大似然估计,逻辑函数Sigmod函数模型详解!!!)

目录 &#x1f354; 逻辑回归应用场景 &#x1f354; 极大似然估计 2.1 为什么要有极大似然估计&#xff1f; 2.2 极大似然估计步骤 2.3 极大似然估计的例子 &#x1f354; Sigmod函数模型 3.1 逻辑斯特函数的由来 3.2 Sigmod函数绘图 3.3 进一步探究-加入线性回归 3…

【爬虫】 使用AI编写B站爬虫代码

记录一次&#xff0c;自己不写一行代码&#xff0c;所有的代码全由AI编写的过程。 本次使用的AI工具为&#xff1a;Claude 其他AI工具同理。 首先&#xff0c;观察哔哩哔哩网页的结构&#xff0c;定位到了包含视频信息的关键元素。右键检查或打开F12&#xff0c;找到最左侧的这…

2024前端面试题-js篇

1.js有哪些数据类型 基础数据类型&#xff1a;string,number,boolean&#xff0c;null&#xff0c;undefined&#xff0c;bigInt&#xff0c;symbol 引用数据类型&#xff1a;Object 2.js检测数据类型的方式 typeof&#xff1a;其中数组、对象、null都会被判断为object&…

基于WebSocket打造的一款SSH客户端

引用&#xff1a;Java打造一款SSH客户端&#xff0c;而且已开源_java ssh客户端-CSDN博客 由于原作者是放在Github上&#xff0c;不方便下载&#xff0c;所以下载下来&#xff0c;转存到码云上&#xff0c;地址&#xff1a;https://gitee.com/lfw1024/web-ssh 为了满足一些小白…

计算机毕业设计选题推荐-股票数据可视化分析与预测-Python爬虫

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Windows10拿到shell后远程登录

一、准备工作 kali机&#xff1a;192.168.19.130 win10&#xff1a;192.168.19.133 主机&#xff1a;192.168.1.73&#xff08;自己操作可以在kali上&#xff0c;我这是因为反弹的shell在主机上&#xff09; 二、开启远程登录 1.win10上关闭实时保护&#xff0c;并且运行了…

[C++] C++11详解 (一)

标题&#xff1a;[C] C11详解 (一) 水墨不写bug 目录 前言 一、列表初始化 二、STL的初始化列表&#xff08;initializer_list —— Cplusplus.com&#xff09; 三、声明方式&#xff08;auto、decltype、nullptr&#xff09; 1.auto ​编辑 2.decltype 正文开始&#x…

Spark环境搭建-Local

目录 Local下的角色分布&#xff1a; Anaconda On Linux 安装 (单台服务器) 1.下载安装 2.国内源 下载Spark安装包 1.下载 2.解压 3.环境变量 测试 监控 Local下的角色分布&#xff1a; 资源管理&#xff1a; Master&#xff1a;Local进程本身 Worker&#xff1a;L…

UE5.4 - 编辑器页面和概念术语

目录 一. 打开新项目 二. 主页面 1.菜单栏 2.工具栏 3.视口 4.内容侧滑菜单/内容浏览器 5.底部工具栏 6.大纲 7.细节面板 三. 虚幻引擎术语 四. 进一步的术语 五. 总结 一. 打开新项目 选择 虚幻引擎 -> 库 -> 启动 选择类型,选择示例的项目,可以把这些都选选…

探索WebSocket在ASP.NET Core中的实时通信应用与实现策略

文章目录 前言一、创建 ASP.NET Core 项目二、配置中间件以支持 WebSocket1.启动类Program.cs2.WebSocket连接管理器3.WebSocket事件管理器4.WebSocket连接入口 三、客户端实现总结 前言 在 ASP.NET Core 中集成 WebSocket 是一种实现实时通信的有效方式。WebSocket 提供了一个…

什么是TCP三次握手和四次挥手,TCP协议详细解析!零基础入门到精通,收藏这一篇就够了

TCP是TCP/IP协议族中一个最核心的协议&#xff0c;它向下使用网络层IP协议&#xff0c;向上为应用层HTTP、FTP、SMTP、POP3、SSH、Telnet等协议提供支持。本文给出TCP报文格式的详细说明&#xff0c;介绍网络数据包传递中如何进行地址解析、建立TCP连接的三次握手过程以及断开T…

【docker】使用github action来自动发布项目到dockerhub

本文首发于 ❄️慕雪的寒舍 使用github action来自动发布项目到dockerhub。参考 https://msdemt.github.io/p/github-action-build-docker/ 博客 1.准备工作 1.1 dockerhub token https://hub.docker.com/settings/security 登录dockerhub&#xff0c;在用户的account settin…

【具体数学 Concrete Mathematics】1.1 递归问题 讲义

【具体数学 Concrete Mathematics】1.1 递归问题 导入 本节(1.1、1.1.1-1.1.3)主要围绕《具体数学》第一章 递归问题&#xff08;Recurrent Problems&#xff09;讲义部分的三个问题展开&#xff0c;分别是汉诺塔、平面上的直线以及约瑟夫问题。下面简单介绍一下递归问题和数学…

复数的处理

复数的处理 复数 V V V 定义为在 ( x , y ) (x,y) (x,y)-平面中实数对的有序集合。在这方面&#xff0c;复数可以被视为原点 ( 0 , 0 ) (0,0) (0,0) 上的向量。从这个角度看&#xff0c;复数的加法类似于 ( x , y ) (x,y) (x,y)-平面中向量的加法。 然而&#xff0c;乘法…

Vue3 国际化i18n语言库 网站多语言切换

介绍 在 Vue 3 项目中&#xff0c;国际化&#xff08;i18n&#xff09;是一个常见的需求&#xff0c;它允许你的应用支持多种语言&#xff0c;并根据用户的语言偏好显示相应的内容。为了实现国际化&#xff0c;你可以使用 vue-i18n 这个库&#xff0c;它是 Vue 官方推荐的国际…

vue常见**MS题 [2]

vue问题及理解 1、介绍一下vue2和vue3的区别 ‌Vue2和Vue3的主要区别体现在双向数据绑定原理、生命周期钩子函数、API、多根节点、性能和体积等方面。‌‌双向数据绑定原理‌&#xff1a;Vue2使用Object.defineProperty实现双向数据绑定&#xff0c;而Vue3则利用ES6的Proxy特性…

赚大钱和赚小钱,哪个更累?

最近一直在质疑我在做的项目&#xff0c;虽然有同行做到了很好的成绩&#xff0c;但是我还是质疑。 因为一直在赚小钱&#xff0c;接触到的也是新手、底层客户、墨迹客户。 越是钱少的生意&#xff0c;越不好做&#xff0c;客户越挑剔。 而且赚小钱会消磨人的心智。 前几年…

解决前端访问IIS服务器发生跨域请求报错的方法

现在WEB开发都是前后端分离的模式了&#xff0c;当前端代码访问后端WEB服务器时&#xff0c;经常会发生跨域请求报错的问题。   如果是IIS服务器&#xff0c;可以通过下面的方式轻松解决。   由于出现跨域问题是因为服务器返回的页面在返回头中没有设置“Access-Control-Al…