R语言对数据的分析

数据集信息:From http://archive.ics.uci.edu/ml/datasets/Wine+Quality这两个数据集与葡萄牙“Vinho佛得角”葡萄酒的红色和白色变种有关。欲了解更多详情,由于隐私和逻辑问题,只有物理化学(输入)和感官(输出)变量是可用的(例如,没有关于葡萄品种、葡萄酒品牌、葡萄酒销售价格等的数据)。

这些数据集可视为分类或回归任务。这类葡萄酒是按顺序排列的,而且不平衡(例如,普通葡萄酒比优质或劣质葡萄酒多)。离群点检测算法可以用来检测少数优秀或劣质葡萄酒。此外,我们也不确定是否所有输入变量都相关。因此,测试特征选择方法可能很有趣。

属性信息:
详情请参阅[Cortez等人,2009年]。
输入变量(基于物理化学测试):
1-固定酸度
2-挥发性酸度
3-柠檬酸
4-残余糖
5-氯化物
6-游离二氧化硫
7-总二氧化硫
8-密度
9-pH
10-硫酸盐
11-酒精
输出变量(基于感官数据):
12-质量(分数在0至10分之间)

实验过程及图片:
一、红葡萄酒分析

library(ggplot2)
library(tidyverse)
library(mice)
library(VIM)
library(psych) data1 <- read.csv2(“winequality-red.csv”,header = T)
view(data1)
class(data1)
data1[,1:11]<-lapply(df[,1:11],as.character)
data1[,1:11]<-lapply(df[,1:11],as.numeric)
view(data1)

aggr(data1,prop=F,numbers=T)#分析是否有残缺值

分析:由图可知没有残缺值
pairs.panels(data1[c(“quality”,“alcohol”,“sulphates”,“density”)])#画散点图矩阵

pairs.panels(data1[c(“quality”,“alcohol”,“sulphates”,“density”,“residual.sugar”,“pH”,“citric.acid”)])#多变量相关性分析

二、白葡萄酒分析

library(ggplot2)
library(tidyverse)
data<-read.csv2(“C:\includeR\winequality-white.csv”,header = T)
View(data)
>head(data)

class(data)# [1] “data.frame”
df[,1:11]<-lapply(df[,1:11],as.character)#将数据中数据的因素格式转化为字符

df[,1:11]<-lapply(df[,1:11],as.numeric)#将数据转化为数值

str(data)
install.packages(“mice”)#缺失值处理包
library(mice)
install.packages(“VIM”)#利用第三方编辑包VIM对R语言中的缺失值分析
library(VIM)
aggr(data,prop=F,numbers=T)
#从图中可以看出没有缺失值

ggplot(aes(x=quality),data=data) + geom_bar()+scale_x_continuous(lim=c(3,9),breaks = seq(3,9,1))
#由于我们最关注葡萄酒质量分布情况,所以对质量进行单变量分析

#右图可见呈正态分布。
#使用summary对总体进行分析
summary(data)

#由图可知各变量的最大值最小值和中位值等值。
ggplot(aes(x = fixed.acidity), data = df) +
geom_histogram(binwidth = 0.1) +
scale_x_continuous(breaks = seq(3.5, 15.5, 3))
summary(df$fixed.acidity)#画出固定酸含量分布图。


分析:从结果中可以发现,固定酸的含量大致是一个正态分布。50%的数据分布在6.3-7.3(g/dm^3)的范围之内。中位数为6.800,平均值为 6.855。

ggplot(aes(x = volatile.acidity), data = df) +geom_histogram(binwidth = 0.01) +scale_x_continuous(breaks = seq(0.1, 1.2, 0.2))
summary(df$volatile.acidity)#画出挥发性酸含量分布图。


分析:从结果中,我们可以发现,挥发酸的含量大致是一个正态分布。50%的数据分布在0.21-0.32(g/dm^3)的范围之内。中位数为0.26,平均值为 0.2782。

ggplot(aes(x = citric.acid), data = df) + geom_histogram(binwidth = 0.01) + scale_x_continuous(breaks = seq(0, 1.8, 0.2))
summary(df$citric.acid)


分析:从结果中,我们可以发现,柠檬酸的含量大致是一个正态分布(除去右边的大于0.6的异常值)。50%的数据分布在0.27-0.39(g/dm^3)的范围之内。中位数为0.32,平均值为0.3342。同时由于,上述提到的三个变量都是酸,因此把固定酸,挥发酸,柠檬酸三项合起来定义一个新的特征总酸量。

ggplot(aes(x = residual.sugar), data = df) +geom_histogram(binwidth = 1)#画出残留唐分布图
summary(df$residual.sugar)


分析:从图中可以看出,残留糖分不是正态分布也不像偏态分布,并且由于坐标之间差距很大,因此在下图使用Log10作伪标尺,再来确认一下分布。从数据上可以看出,50%的数据分布在1.7-9.9(g/dm^3)的范围内,中位数为5.2,平均数为6.391。
ggplot(aes(x = residual.sugar), data = df) +geom_histogram(binwidth = 0.05) +scale_x_log10() +xlab(‘residual.sugar by log10’)#用log10尺度来显示分布图。

分析:从图中可以发现,变成log10显示后,很明显残余糖分出现了一个双峰的形状。结合这个因素,我们新定义一个特征,类型。以5为分界线,定义干葡萄酒(dry)以及甜葡萄酒(sweet)。

dftype&lt;−ifelse(dftype&lt;-ifelse(dftype<−ifelse(dfresidual.sugar >= 5, ‘sweet’, ‘dry’)#建立新的变量类型包含甜和甘。
ggplot(aes(x = type), data = df) + geom_bar(width = 0.3)

table(df$type)

分析:可以看到干葡萄酒和甜葡萄酒数量分别是2367,2531。

ggplot(aes(x = free.sulfur.dioxide), data = df) +geom_histogram(binwidth = 2)#画游离二氧化硫分布图

分析:从结果中可以发现整体是一个长尾分布,50%的数据分布在23.00-35.31(mg/dm^3)之间,中位数为34.00,平均数为35.31。
ggplot(aes(x = total.sulfur.dioxide), data = df) +geom_histogram(binwidth = 3)#对总二氧化硫画图

分析:从结果中可以发现,50%的数据分布在108.-138.4(mg/dm^3)之间。

ggplot(aes(x = density), data = df) + geom_histogram(binwidth = 0.0003) + scale_x_continuous(breaks = seq(.98, 1.04, 0.01))#画密度的分布图

分析:从结果中可以看出,密度的分布区间很小,而且密度的大小与酒精的含量由一定的关系。

ggplot(aes(x = pH),data = df) + geom_histogram(binwidth = 0.01) + scale_x_continuous(breaks = seq(2.7, 3.8, 0.1))#画出pH分布图

分析:从结果中可以发现,pH大致是一个正态分布,50%的数据位于3.09-3.28之间。

ggplot(aes(x = sulphates), data = df) +geom_histogram(binwidth = 0.02)#画硫甲酸的分布图

分析:从结果中可以看出,硫酸钾的含量大致是正态分布(略为长尾)。50%的数据位于0.4100-0.5500(g/dm^3)之间。

ggplot(aes(x = quality),data = df) +geom_bar() +scale_x_continuous(breaks = seq(3,9,1))#画质量的分布图

分析:从结果中可以看出,50%的数据分布在5-6之间,因此以此为界,建立一个新的特征,评分,分为好,中,差。

dfrating&lt;−ifelse(dfrating &lt;- ifelse(dfrating<−ifelse(dfquality >= 7, ‘good’, ifelse(dfKaTeX parse error: Expected 'EOF', got '#' at position 31: …common','bad'))#̲新建一个分列为rating,其…rating)

画出相关系数矩阵

ggcorr(data = subset(df, select = -c(type,quality.order)),label = TRUE,label_size = 4, label_round = 2, label_alpha = TRUE, hjust = 0.8, size = 3, color = “grey50”)

分析:由图可知密度与含糖量正相关性最强,而密度和酒精度的负相关性最强,符合物理知识。与质量有着相对较强关系的:
质量与酒精度有着正相关关系,相关系数0.44(数值上的与质量有关的最大相关系数)。
质量与密度有着负相关关系,相关系数为-0.31。
质量与总二氧化硫含量有着负相关关系,相关系数为-0.17。
质量与氯化物含量有着负相关关系,相关系数为-0.21。
质量与挥发酸含量有着负相关关系,相关系数为-0.19。
其他变量之间的较强关系:
酒精与密度有着负相关关系,相关系数-0.78。
pH与固定酸之间有着负相关关系,相关系数-0.43。
残余糖分与密度有着正相关关系,相关系数0.84。
酒精与氯化物有着负相关关系,相关系数-0.36.
酒精与总二氧化硫有着负相关关系,相关系数-0.45。

ggplot(aes(x = quality.order, y = alcohol), data = df) + geom_boxplot() +xlab(‘quality’)#画质量与酒精度箱线图

分析:从图中可以看出,3-5的范围内,随着较高评分的酒对应着较低的酒精度。
而从5-9的范围内,较高评分的酒对应着较高的酒精度。

ggplot(aes(x = quality.order, y = alcohol), data = df) + geom_boxplot(alpha = 0.2, aes(fill = rating)) + geom_hline(yintercept = quantile(subset(df,rating ==‘good’)$alcohol, .25), linetype = 2, color = ‘red’) + xlab(‘quality’) + scale_y_continuous(breaks = seq(8, 14, 1))#将箱线图分为好、中、差三个方面涂色

分析:从这副图中可以清楚地看到,很大程度上酒精度的多少决定了酒的质量。不仅仅是因为,酒精度与质量的相关系数为比其他变量与质量的相关系数都要高(0.44),并且,从图中的红线可以看到,75%以上的质量为好的酒拥有10.7以上的酒精度。与此相对,从箱形图可以看出,质量为差的酒的酒精度大部分都低于这个值。

ggplot(aes(x = quality.order, y = density), data = df) + geom_boxplot() + ylim(0.99,1.001) + xlab(‘quality’)#画质量与密度的箱线图

分析:发现了与酒精度相反的趋势。在3-5的范围内,质量高的酒拥有较高密度。而在5-9的范围内,质量高的酒拥有拥有较低的密度。不过由于酒精度与密度由较强的负相关性,相关系数-0.78。

p1 = ggplot(aes(x = alcohol, y = density), data = df) + geom_point(alpha = 0.1) + xlim(min(dfalcohol),quantile(dfalcohol), quantile(dfalcohol),quantile(dfalcohol, 0.95)) + ylim(min(dfdensity),quantile(dfdensity), quantile(dfdensity),quantile(dfdensity, 0.95)) + geom_smooth(method = ‘lm’, color = ‘blue’)
p2 = ggplot(aes(x = residual.sugar, y = density), data = df) + geom_point(alpha = 0.1) + geom_smooth(method = ‘lm’, color = ‘red’) + xlim(min(dfresidual.sugar),quantile(dfresidual.sugar), quantile(dfresidual.sugar),quantile(dfresidual.sugar, 0.95)) + ylim(min(dfdensity),quantile(dfdensity), quantile(dfdensity),quantile(dfdensity, 0.95))
grid.arrange(p1, p2, ncol = 2)#分别画出质量酒精度、质量残余糖的散点图,并画出回归线。

cor(dfalcohol,dfalcohol, dfalcohol,dfdensity)

cor(dfresidual.sugar,dfresidual.sugar, dfresidual.sugar,dfdensity)

分析:从这里可以很明显看出酒精度与残余糖分对于密度的影响。酒精负相关,残余糖分正相关。酒精的负相关在上面已经解释过了。而糖分也很明显,糖溶于水后体积基本不变,而质量则会明显增长。因此正相关。从这里我们可以发现密度几乎就与残余糖分和酒精度有关。这就说明,密度拥有第二高的正相关系数,基本都是因为酒精度的原因。更加强调了,酒精度对于酒的质量的重要性。

多变量绘图

ggplot(aes(x = quality.order, y = alcohol), data = df) + geom_boxplot(aes(color = df$type)) + xlab(‘quality’)#画出酒精,质量,酒的类型,之间的箱线图

分析:从图中可以发现,双变量最后的分析中,干葡萄酒比甜葡萄酒的总体分数要高的原因,看来不在于干,甜本身,并不是专家的口味有偏好,而是因为干葡萄酒中的酒精的整体含量要高于甜葡萄酒。说明不管是干还是甜,都是主要以酒精度的高低来进行酒的质量的判断。而这个原因有可能是因为,残余糖分多的葡萄酒的发酵相对来说不完全(糖分没有完全转化为酒精),导致的甜葡萄酒普遍酒精度较低。

R语言数据集分析--葡萄酒相关推荐

  1. R语言生存分析详解:KM曲线、COX比例风险模型、HR值解读、模型比较、残差分析、是否比例风险验证:基于survival包lung数据集

    R语言生存分析详解:KM曲线.COX比例风险模型.HR值解读.模型比较.残差分析.是否比例风险验证:基于survival包lung数据集 目录

  2. R语言︱情感分析—词典型代码实践(最基础)(一)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...

  3. R语言案例分析:多元数据的基本统计分析

    R语言案例分析:多元数据的基本统计分析 来自<多元统计分析与R语言建模> 第四版 数据集下载 我们利用该数据集中的Case1来完成下面的R语言操作: options(digits = 4) ...

  4. R语言 数据集处理与搭建回归模型

    R语言 数据集回归模型 1. 读取csv文件 data <- read.csv("D:\\路径") 2. 相关性分析 与 共线性判断 可以用R语言的cor函数来计算两个变量之 ...

  5. R语言生存分析可视化分析

    生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法. 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, "事件历史分析"的社会学 在工程的"故障 ...

  6. 科研绘图之R语言生存分析KM曲线累计风险表放在图片内部

    科研绘图之R语言生存分析KM曲线和累计风险表 KM估计 R语言展示KM估计的生存函数曲线 1.最简单的方法 2.利用survminer包绘制 3.进一步美化,添加累计风险表格.图例.文本注释 KM估计 ...

  7. R语言生存分析数据分析可视化案例

    目标 本文的目的是对如何在R中进行生存分析进行简短而全面的评估.关于该主题的文献很广泛,仅涉及有限数量的(常见)问题.最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出. 可用的R包 ...

  8. R语言生存分析的实现

    生存分析是临床常用统计方法,一旦和时间扯上关系,分析就变得复杂多了,此时不再是单一的因变量,还需要考虑时间给因变量和自变量带来的各种影响. 本次主要演示R语言做生存分析的一些方法.比如寿命表.K-M曲 ...

  9. R语言案例分析:财政收入的多元相关与回归分析

    R语言案例分析:财政收入的多元相关与回归分析 数据集下载 (mvcase3.xls)中的表Case3. y:财政收入  x1:国内生产总值  x2:能源消费总量  x3:从业人员总数  x4:全社会固 ...

最新文章

  1. python字符照片_python图片转字符图片
  2. 采购申请的处理流程 --- 责任链模式
  3. 二分查找的基本原理及实现
  4. 1.22 实例:商品信息查询
  5. [WCF Step by Step 读书笔记] Chapter01 WCF 介绍
  6. Python——获取CPU的线程数量
  7. 论坛指定portal.php,去除Discuz论坛域名后面的/forum.php或portal.php
  8. 关于PHOTO SHOP CS9.0无法启动adobe updater 请重新安装应用程序和组件解决方法!
  9. 第003讲 无序列表 有序列表 框架
  10. 如何添加BigBoss的Cydia源地址
  11. Android实现可编辑下拉菜单
  12. EleutherAI GPT-Neo: 穷人的希望
  13. 安卓开发的深度技术实战详解
  14. 函数最值题目及答案_高一函数题目及答案解析
  15. RichView TextBox Items 文本框
  16. 智慧旅游的c端产品破局
  17. Win7下Python操作MySQL步骤
  18. OrangePi PC 玩Linux主线内核踩坑之旅(三)之设置静态IP地址
  19. 短视频营销是什么?为什么现在这么火?
  20. 关于SHOPEX及ECSHOP哪个好

热门文章

  1. VC工具栏图标制作流程
  2. 一文看尽深度学习中的各种注意力机制(1998-2020年)
  3. Android分享网络图片至微信QQ
  4. 菊安酱与菜菜的Python机器学习可视化(week1 correlation - 01散点图 02气泡图)
  5. c语言单链表递增排序,单链表 基本操作(元素递增排序)
  6. Ventuz中的shader 学习笔记(一)
  7. 夺命雷公狗暂定的课程表
  8. 名画38 王诜《渔村小雪图》
  9. 比较全部且常用的页面检验(juery)
  10. 砥砺的前行|基于labview的机器视觉图像处理|NI Vision Assisant(三)——Image(图像) 功能