汽车燃料效率
#汽车燃料效率数据来源#'http://www.fueleconomy.gov/feg/epadata/vehicles.csv.zip'
vehicles<-read.csv('C:\\Users\\Administrator\\desktop\\R\\vehicles.csv',stringsAsFactors = F,header = T)#导入数据
head(vehicles) #查看导入的数据
nrow(vehicles)#查看数据有多少行
[1] 39958
ncol(vehicles)#查看数据有多少列(变量)
[1] 84
names(vehicles)#查看每一列的名称
[1] "barrels08" "barrelsA08" [3] "charge120" "charge240" [5] "city08" "city08U" ......[79] "modifiedOn" "startStop" [81] "phevCity" "phevHwy" [83] "phevComb" "trany2"
length(unique(vehicles[,'year']))#查看数据集中包含多少年的数据
[1] 36
length(unique(vehicles$year))#同上
[1] 36
first_year<-min(vehicles[,'year'])
last_year<-max(vehicles[,'year'])
first_year
[1] 1984
last_year
[1] 2019
table(vehicles$fuelType1)#查看燃料类型
Diesel Electricity
1131 165
Midgrade Gasoline Natural Gas
96 60
Premium Gasoline Regular Gasoline
11235 27271
vehicles$trany[vehicles$trany=='']<-NA #将传动方式中的缺失值用NA填补
vehicles$trany2<-ifelse(substr(vehicles$trany,1,4)=='Auto','Auto','Manual')
#使用substr()函数提取trany值得前四个字符用于分类并生成一个新的变量trany2
[1] "Manual" "Manual" "Manual" "Auto"
[5] "Manual" "Auto" "Manual" "Auto"
[9] "Manual" "Auto" "Manual" "Auto"
......
mpgByYr<-ddply(vehicles,~year,summarise,avgMPG=mean(comb08),avgHghy=mean(highway08),avgCity=mean(city08))
#使用plyr包中的ddply()函数来操作vehicles数据集,按年份整合,然后对每个组计算highway、city和combine的燃油效率,将结果赋值给一个新的数据框:mpgByYr
ggplot(mpgByYr,aes(year,avgMPG))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average MPG')+ggtitle('All Cars')
#绘制avgMPG和Year之间的关系(geom_point()指定通过点的方式绘制图形,geom_smooth()在图中添加一个阴影区域来展示平滑的均值并加上一个置信度为0.95的置信区间)
ggplot(mpgByYr,aes(year,avgHghy))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Highway MPG')+ggtitle('All Cars')
#绘制avgHghy和Year之间的关系
ggplot(mpgByYr,aes(year,avgCity))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average City MPG')+ggtitle('All Cars')#绘制avgCity和Year之间的关系
基于上述可视化结果,似乎可以得出一个结论:近年来销售的汽车的燃油经济性有了显著的增长。然而以下的数据显示出近年来混合动力和非燃油汽车的销量在增长:
table(vehicles$fuelType1)
因此上述结论并不准确,接下来我们只看燃油汽车的数据
gasCars<-subset(vehicles,fuelType1 %in% c('Regular Gasoline','Premium Gasoline','Midgrade Gasoline')&fuelType2==''&atvType!='Hybrid')
#使用subset()函数生成一个新的数据框:gasCars。这个数据框只包含纯汽油汽车
mpgByYr_Gas<-ddply(gasCars,~year,summaries,avgMPG=mean(comb08),avgHghy=mean(highway08),avgCity=mean(city08))#按年份整合纯汽油汽车的数据
ggplot(mpgByYr_Gas,aes(year,avgMPG))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average MPG')+ggtitle('Gasoline Cars')
#绘制出纯汽油汽车MPG与year之间的关系
ggplot(mpgByYr_Gas,aes(year,avgHghy))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Highway MPG')+ggtitle('Gasoline Cars') #绘制出纯汽油汽车avgHghy与year之间的关系
ggplot(mpgByYr_Gas,aes(year,avgCity))+geom_point()+geom_smooth()+xlab('year')+ylab('Average City MPG')+ggtitle('Gasoline Cars') #绘制纯汽油汽车avgCity与year的关系。
从上述结果中可以得出较为准确的结论
考察近年来大马力车的产量是否降低,如果是这样,就可以解释前述的这种增长,首先明确大功率的汽车是否汽车燃油效率更低,变量displ表示引擎的排量,单位为升。
typeof(gasCars$displ)#查看displ的类型,如果不是数值型则需要进行处理:
#gasCars$displ<-as.numeric(gasCars$displ)
ggplot(gasCars,aes(displ,comb08))+geom_point()+geom_smooth()#绘制排量与燃油效率的散点图与曲线图
从图中可以看到,引擎排量和燃油效率之间为负相关,也就是说排量小的车燃油效率会更高
接下来考察一下近年来是否生产了更多的小排量汽车,这样就可以解释燃油效率最近有大幅的提升这个问题了
avgCarsize<-ddply(gasCars,~year,summarise,avgDispl=mean(displ))
ggplot(avgCarsize,aes(year,avgDispl))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Engine Displacement(L)')
在图中我们可以看到:平均引擎排量在2007年左右之后有一个显著的下降
为了更好的看到对燃油效率的影响,现在逐年绘制出MPG和排量之间的关系
生成一个新的数据框byYear,包含每年的平均燃油效率和平均引擎排量
byYear<-ddply(gasCars,~year,summarise,avgMPG=mean(comb08),avgDispl=mean(displ))#分解数据框,将平均燃油效率和平均引擎排量分开,用reshape2包中的melt()函数
byYear2<-melt(byYear,id='year')
#得到的byYear2中的行数为byYear的两倍levels(byYear2$variable)<-c('Average MPG','Avg engine displacement')#更改变量名称接下来在一个窗口内绘制两幅图
ggplot(byYear2,aes(year,value))+geom_point()+geom_smooth()+facet_wrap(~variable,ncol=1,scales='free_y')+xlab('Year')+ylab('')
从这个图中可以看到:引擎排量的大小在2008年之前总体是增加的,尤其是2006-2008年间大排量引擎汽车的数量有一个明显的增大从2009年起,引擎排量的平均大小有了显著的下降,这一现象在一定程度上解释了燃油效率的显著提升2005年之前,引擎排量一直在增加但是燃油效率基本上没有变化,这说明在这些年间引擎的效率一直在提升2006-2008年间虽然平均引擎排量有一个显著的提升,但是MPG和前几年差不多,需要对这个问题进行更多的研究
将这一趋势放到小排量引擎上,比较自动挡与手动挡汽车的排量
gasCars4<-subset(gasCars,cylinders=='4')#四缸车型
ggplot(gasCars4,aes(factor(year),comb08))+geom_boxplot()+facet_wrap(~trany2,ncol=1)+theme(axis.text.x=element_text(angle=45))+labs(x='Year',y='MPG')
#ggplot2生成一个箱线图,展示了每一年值的分布情况
从上图中可以得出一个大概的结论:手动挡车型的燃油效率要略高于自动挡车型,但是看起来手动挡车型的数量越来越少
接下来考察每一年份手动挡车型的占比
ggplot(gasCars4,aes(factor(year),fill=factor(trany2)))+geom_bar(position='fill')+labs(x='Year',y='Proportion of cars',fill='Transmission')+theme(axis.text.x=element_text(angle=45))+geom_hline(yintercept=0.5,linetype=2)
从上图中可以明显地看出:近年来手动挡车型的占比有大幅度的下降
另外一个可能影响车辆燃油效率的因素是气缸数量,近年来四缸车型越来越多
接下来研究汽车的生产商和型号是如何随时间改变的
生产商和车型随时间变化如何影响燃油效率
carsMake<-ddply(gasCars,~year,summarise,numberOfMakes=length(unique(make)))
ggplot(carsMake,aes(year,numberOfMakes))+geom_point()+geom_smooth()+labs(x='Year',y='Number of available makes')+ggtitle('Four cylinder cars')
uniqMakes<-dlply(gasCars4,~year,function(x)unique(x$make))
commonMakes<-Reduce(intersect,uniqMakes)#Reduce()函数是一个高级函数,其输入为intersect()函数,对每一个元素求交集得出结果
[1] "Honda" "Toyota" "Volkswagen"
[4] "Chevrolet" "Mazda" "Subaru"
[7] "Jeep"
以上结果展示的是每一年都会出现的制造商名单
carsCommonMakes4<-subset(gasCars4,make %in% commonMakes)avgMPG_commonMakes<-ddply(carsCommonMakes4,~year+make,summarise,avgMPG=mean(comb08))ggplot(avgMPG_commonMakes,aes(year,avgMPG))+geom_line()+facet_wrap(~make,nrow=3)
上述制造商产品的燃油效率变化情况
通过以上的分析,可以初步得出结论:汽车的燃油效率在不断的提升(MPG数值变大),其中不仅新能源车型的占比得到提高,在可能影响到MPG的因素中,排量,气缸数,变速箱类型等都会导致MPG的提升。
---------------------
作者:RH_Wang
来源:CSDN
原文:https://blog.csdn.net/RH_Wang/article/details/81021371
版权声明:本文为博主原创文章,转载请附上博文链接!