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

注:基于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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stripe Element 如何使用

这里要准备好几个东西&#xff1a; 一个支付成功过后的回调 还有一个下单的接口 一旦进入这个下单界面&#xff0c;就要去调下单的接口的&#xff0c;用 post, 这个 接口你自己写&#xff0c;可以写在后端中&#xff0c;也可以放到 nextjs 的 api 中。 首先说的是这个下单…

聚星文社——绘唐科技Ai推文软件

聚星文社——绘唐科技Ai推文软件 聚星文社--绘唐科技Ai推文软件https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7nof AI推文软件是一种利用人工智能技术帮助用户自动生成推文内容的工具。 该软件会分析用户提供的相关信息和目标群体&#xff0c; 然后使用机器学习…

闲置物品交易平台网站商城-计算机毕设Java|springboot实战项目

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

【运维高级内容--MySQL】

目录 一、mysql安装 二、MySQL主从复制 一、mysql安装 yum install cmake gcc-c openssl-devel ncurses-devel.x86_64 rpcgen.x86_64 #安装依赖性 #在root路径下下载mysql-boost-5.7.44、libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm安装包 yum install libtirpc-devel…

MFC之word操作

MFC对word操作 背景说明 当对程序的内容进行输出时&#xff0c;比如自定义对象属性描述或者注释&#xff08;详细设计&#xff09;生成文档时&#xff0c;如果采用手动输入会比较麻烦&#xff0c;并且当程序变动时&#xff0c;需要再一次修改对应文档&#xff0c;作为程序员做…

ASP.NET Core 入门教程一 创建最小 API

构建最小 API&#xff0c;以创建具有最小依赖项的 HTTP API。 它们非常适合需要在 ASP.NET Core 中仅包括最少文件、功能和依赖项的微服务和应用。 本教程介绍使用 ASP.NET Core 生成最小 API 的基础知识。 启动 Visual Studio 2022 并选择“创建新项目”。 在“创建新项目”…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector(模拟实现)

1.存储结构 namespace zone {template<class T> //需要模板class vector{public:private:iterator _start;iterator _finish;iterator _endofstorage;}; } 可见&#xff0c;vector内核是由三个指针实现的 2.默认成员函数 2.1.构造函数 1.初始化列表 vector() :_star…

linux 磁盘满了,程序运行失败,如何处理?df -h

场景&#xff1a;紧急呼救&#xff0c;上传图片失败了。我一脸懵&#xff0c;服务器这是又咋地了&#xff0c;别邪乎姐姐&#xff0c;姐姐胆子小啊。 一、寻找问题原因 1、OSS出问题了&#xff1f; 然后我尝试了 IOS 的APP是没问题的&#xff0c;Android提示上传失败&#xf…

IIS发布打包后文件

1.打开IIS软件 2 添加网站&#xff0c; 自定义网站名称-选择要放置的资源路径-选择IP地址 3.打开放置的资源目录放置打包后文件 4.选择浏览 搜索不到IIS可进行一下操作 控制面板-程序和功能-启用或关闭windows功能-勾选IIS

Linux之数字证书

新书速览|Ubuntu Linux运维从零开始学_ubuntu linux运维从零开始学 pdf 下载-CSDN博客 《Ubuntu Linux运维从零开始学&#xff08;Linux技术丛书&#xff09;》(肖志健)【摘要 书评 试读】- 京东图书 (jd.com) 随着网络环境的恶化&#xff0c;人们已经逐渐抛弃网络上面的明文…

【python】灰色预测 GM(1,1) 模型

文章目录 前言python代码 前言 用 python 复刻上一篇博客的 Matlab 代码。 【学习笔记】灰色预测 GM(1,1) 模型 —— Matlab python代码 # %% import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt from matplotlib.pylab import mplmpl.rcPa…

江协科技STM32学习- P4 新建工程

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

模拟笔试 - 卡码网周赛第三十一期(23年百度笔试真题)

难度适中&#xff0c;动态规划出现的比例还是比较高的&#xff0c;要好好掌握&#xff0c;二分查找的点也是比较灵活的。&#xff08;A卷和B卷第一道题是一样的&#xff09; 题目一&#xff1a;讨厌鬼的组合帖子 思路&#xff1a;这个题算是一个还不错的题&#xff1b; 本质就…

C语言每日好题(3)

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 #define _CRT_SECURE_NO_WARNING #include <stdio.h> #include <string.h> int main(void) {if ((strlen("abc") - strlen("abcdef")) > 0)printf(">\n")…

【图文并茂】ant design pro 如何优雅地把删除和批量删除功能合并到一起,并抽出来成为组件

如上图所示&#xff0c;其实批量删除和删除应该算是一个功能 只是删除一个或多个的区别 那么接口应该用的同一个 删除一个的时候呢&#xff0c;就传 一个对象_id 过去 删除多个的时候&#xff0c;就传 多个 对象 _id 的数组过去 后端 const deleteMultipleRoles handleAs…

软件测试-测试分类

测试分类 按照测试目标测试 界面测试 页面内展示的所有内容/元素都需要测试 参考UI图找不同 功能测试 ​ 如何设计功能测试用例&#xff1f; 参考产品规格说明书进行用例的编写&#xff0c;具体的测试用例需要使用黑盒设计测 试用例的方法&#xff0c;如等价类、边界值、…

嵌入式学习——(Linux高级编程——线程控制)

线程的互斥 一、互斥的重要性 在多线程编程中&#xff0c;互斥机制至关重要。当多个线程同时访问临界资源时&#xff0c;如果没有有效的互斥控制&#xff0c;可能会导致数据不一致、资源竞争等问题。通过互斥锁&#xff0c;可以确保在任何时刻只有一个线程能够访问临界资源&am…

PHPShort轻量级网址缩短程序源码开心版,内含汉化包

需要网址缩短并且想获得更多有关链接点击率和流量的数据分析&#xff0c;那么 PHPShort 可能是一个非常好的选择。PHPShort 是一款高级的 URL 缩短器平台&#xff0c;可以帮助你轻松地缩短链接&#xff0c;并根据受众群体的位置或平台来定位受众。 该程序基于 Laravel 框架编写…

python构建一个web程序

from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return 欢迎来到我的Python Web程序!if __name__ __main__:app.run(debugTrue)1、安装flask D:\Users\USER\PycharmProjects\pythonProject1\p01>pip install flask WARNING: Ignoring invalid…

多线程中常见问题

1、为什么不建议使用Executors来创建线程池&#xff1f; 除开有可能造成的OOM外&#xff0c;使用Executors来创建线程池也不能自定义线程的名字&#xff0c;不利于排查问题&#xff0c;所以建议是直接使用ThreadPoolExecutor来定义线程池&#xff0c;这样可以灵活控制 2、线程…