红酒质量探索项目
紅酒質量探索
# 加載你最終使用的所有組件 # 在這個代碼塊的分析中。# 注意,在這個代碼塊中,將參數 "echo" 設為假。 # This prevents the code from displaying in the knitted HTML output.這可以避免代碼混入 HTML 輸出顯示。 # 應當在文件中,對所有代碼塊設為 echo=FALSE 。 # 導入包 library(ggplot2) library(dplyr) library(knitr) library(gridExtra) library(gpairs) library(RColorBrewer)這份報告探索了一個包含大約1600條紅酒質量和其屬性的數據集。在整個流程中,我們的目標是了解哪個化學成分影響紅葡萄酒的品質。
# 加載數據 pf <- read.csv("wineQualityReds.csv") #查看變量及數據類型并進行匯總 str(pf) summary(pf)
單變量繪圖選擇
quality探索
# 通過ggplot函數來繪制變量quality的條形圖ggplot(data = pf, aes(x=factor(quality))) +# 填充顏色geom_bar(color = "#696356",fill = "#CACACA")+# 設置標簽及標題labs(x = 'Quality', y = 'Frequency', title = 'Bargraph for quality of red wines')紅酒質量的評分集中在5~6分,75%的評分小于6分,最低值為3分,最高值為8分,平均值為5.6分。
fixed.acidity探索
# 繪制變量fixed.acidity的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = fixed.acidity),data = pf)+# 調整組距,填充顏色geom_histogram(binwidth = 0.5,color = "#696356",fill = "#CACACA")+# 添加scale_x_continuous層# 并設置limits & breaksscale_x_continuous(limits = c(4.5,16),breaks = seq(4.5,16,1))# 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并保存到變量p2中 p2 <- ggplot(aes(x = fixed.acidity),data = pf)+geom_histogram(color = "#696356",fill = "#CACACA")+scale_x_log10()# 將p1,p2兩個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,ncol = 1) # 使用summary命令對變量fixed.acidity進行匯總統計 summary(pf$fixed.acidity)固定酸度數據集呈右偏太分布,對數據進行log10轉換,轉換后的數據基本呈正太分布,數據集中在6.5~9g/dm^3 之間。
75%的數據是小于9.2g/dm^3 。我想知道紅葡萄酒的固定酸與其品質之間的關系。
添加分面圖層后,我們將直方圖基于分類變量quality分成了六個直方圖。
圖中數據代表紅葡萄酒質量評分3 ~ 8分分別對應其固定酸的直方圖。
質量評分為3 的計數較少,固定酸數據從6.5g/dm^3 ~ 11.5g / dm^3 分布較零散.
質量評分是5 ~ 7分的固定酸數據主要分布在6.5 ~ 10g/dm^ 3,三者中均有固定酸達到14g / dm ^3 以上的高酸度數據.
質量評分為8分的計數量也較小,其固定酸分布較離散,大部分集中分布于7 ~ 10.5g / dm^3 之間。
使用匯總命令對不同質量下固定酸數據進行匯總統計。
# 通過ggplot繪制變量quality與變量fixed.acidity的箱線圖 # 變量quality需要轉換為factor類型 ggplot(aes(x = factor(quality),y = fixed.acidity),data = pf)+# 箱線圖geom_boxplot()+# 通過stat_summary函數添加不同組的平均值# 同時設置平均值以散點圖的形式與箱線圖疊加# 設置點的顏色,形狀及大小stat_summary(fun.y = 'mean', geom = 'point',color='red',shape=8,size=4)+# 添加coord_trans圖層限制y軸coord_trans(limy = c(4.5,13.5))我們按照質量生成固定酸度箱線圖,這樣可以快速看到分布之間的差異,特別是六個組中位數之間的差異.
去掉異常值,取小于13.5g/dm^ 3的固定酸數據。質量評分是3 ~ 4分的固定酸中位數相同均為7.5 g / dm^ 3,
質量評分為5 ~ 6分的固定酸中位數不相上下,分別為7.8 g / dm^3 , 7.9g/dm^3,
評分為7 ~ 8分的固定酸中位數分別為8.8 g / dm^ 3 ,8.25 g / dm^ 3。
圖中紅色點代表基于quality分組下的固定酸平均值。從以上的匯總統計數據及中位數與箱線圖的分布來看,隨著紅葡萄酒質量的提升,固定酸有一定的提升,但是當葡萄酒質量達到比較好的狀態時,固定酸會處于一個恒定水平,不會再增長。
volatile.acidity探索
# 通過ggplot函數來繪制變量volatile.acidity的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = volatile.acidity),data = pf)+# 調整組距,填充顏色geom_histogram(binwidth = 0.05,color = "#696356",fill = "#CACACA")+# 添加scale_x_continuous層,并設置limits&breaks scale_x_continuous(limits = c(0.1,1.6),breaks = seq(0.1,1.6,0.1))# 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并保存到變量p2中p2 <- p1 + scale_x_log10() # 將p1,p2兩個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,ncol = 1) # 使用summary命令對變量volatile.acidity進行匯總統計 summary(pf$volatile.acidity)揮發性酸數據分布偏右太,對其進行對數轉換,大部分數據集中在0.3 ~ 0.7 g / dm^3 之間,75%的數據處于0.64g / dm^3 以下。
# 在變量volatile.acidity的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = volatile.acidity),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth = 0.1,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(0.1,1.6),breaks = seq(0.1,1.6,0.2))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol =2) # 按照兩列來展示圖形評分較低3 ~ 4分酒的揮發性酸分布從0.3 ~ 1.2 g / dm^3,其中3分酒的揮發性酸分布較分散;
評分為5 ~ 6分酒的揮發性酸,集中分布于0.4 ~ 0.7 g / dm^3.
而評分較高酒的揮發性酸分布呈右偏態,且含揮發性酸在逐漸減少。
我們通過箱線圖來進一步觀察,限制y軸。通過以上的匯總數據及揮發酸中位數與平均數的分布情況看出,隨著酒質量的提升,揮發性酸的中位數及平均數在逐漸減少。圖中紅色點代表基于quality分組下的揮發性酸平均值。
citric.acid探索
# 通過ggplot函數來繪制變量citric.acid的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = citric.acid),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")# 調整直方圖的組距后并將其保存到變量p2中 p2 <- ggplot(aes(x = citric.acid),data = pf)+geom_histogram(binwidth = 0.005,color = "#696356",fill = "#CACACA")# 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并將其保存到變量p3中 p3 <- p1 + scale_x_log10()# 將p1,p2,p3三個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,p3,ncol = 1) # 使用summary命令對變量citric.acid進行匯總統計 summary(pf$citric.acid) # 使用table命令對變量citric.acid中每個值計數 table(pf$citric.acid)檸檬酸數據的分布為長尾數據。通過轉換長尾數據,從其分布來看,仍比較分散。檸檬酸75%的數據是低于0.42g/dm^3,從檸檬酸的數據分布來看,最小值為0,且有132條記錄為0,最大值為1。葡萄酒的酸有許多種,最為主要的便是酒石酸,醋酸和檸檬酸,其中酒石酸含量最高是葡萄酒酸味的主要來源,而檸檬酸則較為少量甚至沒有。
# 在變量citric.acid的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = citric.acid),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth = 0.05,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(0,1),breaks = seq(0,1,0.1))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol =2) # 按照兩列來展示圖形從上邊的直方圖分布來看,評分為3分酒的檸檬酸分布與0 ~ 0.6 g / dm^3 范圍,且分布較分散。
評分4 ~ 6酒的檸檬酸分布與0 ~ 0.5 g / dm^3 之間。評分7 ~8 分酒的檸檬酸集中分布于0.3 ~ 0.6 g / dm^3.
從統計匯總及箱線圖的分布來看,隨著酒質量的提升,檸檬酸的中位數及平均數逐漸增加。圖中紅色點代表基于quality分組下的檸檬酸平均值。
residual.sugar探索
# 通過ggplot函數來繪制變量residual.sugar的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = residual.sugar),data = pf)+# 調整組距,填充顏色geom_histogram(color = "#696356",fill = "#CACACA")+# 添加scale_x_continuous層,并設置limits&breaks scale_x_continuous(limits = c(0.5,16),breaks = seq(0.5,16,2))# 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并保存到變量p2中 p2 <- p1 + scale_x_log10() # 將p1,p2兩個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,ncol = 1) # 使用summary命令對變量residual.sugar進行匯總統計 summary(pf$residual.sugar)剩余糖分分布圖為長尾數據,對其進行對數轉換,75%以下數據處于2.6 g / dm^3 以下
# 在變量residual.sugar的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = residual.sugar),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth =0.5,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(0,16), breaks = seq(0,16,1))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol =2) # 按照兩列來展示圖形從上圖可看出,評分高與評分低的酒剩余糖分分布都較分散,但是所有不同質量的酒含有的剩余糖分都比較固定,大部分分布與1 ~ 4 g / dm^3 之間。
# 通過by命令統計出不同quality的residual.sugar匯總 by(pf$residual.sugar,pf$quality,summary) # 通過ggplot繪制變量quality與變量residual.sugar的箱線圖 # 變量quality需要轉換為factor類型 ggplot(aes(x = factor(quality),y = residual.sugar),data = pf)+# 箱線圖geom_boxplot()+# 通過stat_summary函數添加不同組的平均值# 同時設置平均值以散點圖的形式與箱線圖疊加# 設置點的顏色,形狀及大小stat_summary(fun.y = 'mean', geom = 'point',color='red',shape=8,size=4)+# 添加coord_trans圖層限制y軸coord_trans(limy =c(1,4.5))通過箱線線圖進一步探索,從統計數據及分布來看,不同質量的酒中含有的剩余糖分趨于穩定,波動很小,圖中紅色點代表基于quality分組下的剩余糖分平均值。
chlorides探索
# 通過ggplot函數來繪制變量chlorides的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = chlorides),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")+# 添加scale_x_continuous層# 并設置limits & breaksscale_x_continuous(limits = c(0,0.62),breaks = seq(0,0.62,0.1)) # 限制x軸數據, # 并保存到變量p2中 p2 <- p1 + xlim(0,0.15) # 將p1,p2兩個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,ncol = 1) # 使用summary命令對變量chlorides進行匯總統計 summary(pf$chlorides)從氯化物直方圖看,是長尾數據,去掉異常值,放大其分布,近似正太分布,數據集中分布與0.05 ~ 0.10 g / dm^3. 75%的數據處于0.09 g / dm^3 以下。
# 在變量chlorides的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = chlorides),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth = 0.01,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(0,0.62),breaks = seq(0,0.62,0.1))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol = 2) # 按照兩列來展示圖形從上方直方圖可以看出,不論是質量偏低的酒還是偏高的酒,其氯化物大部分分布在0.05 ~ 0.1 g/ dm^3 之間。
# 通過by命令統計出不同quality的chlorides匯總 by(pf$chlorides,pf$quality,summary) # 通過ggplot繪制變量quality與變量chlorides的箱線圖 # 變量quality需要轉換為factor類型 ggplot(aes(x = factor(quality),y = chlorides),data = pf)+# 箱線圖geom_boxplot()+# 通過stat_summary函數添加不同組的平均值# 同時設置平均值以散點圖的形式與箱線圖疊加# 設置點的顏色,形狀及大小stat_summary(fun.y = 'mean', geom = 'point',color='red',shape=8,size=4)+# 添加coord_trans圖層限制y軸coord_trans(limy = c(0.025,0.21))從匯總統計及箱線圖分布來看,氯化物中位數隨著酒質量的提升也逐步提升,但是提升幅度很小。而平均數相對來說有點波動,尤其是質量評分為3的酒,這是由于異常值導致的。圖中紅色點代表基于quality分組下的氯化物平均值。
free.sulfur.dioxide&total.sulfur.dioxide探索
# 繪制變量free.sulfur.dioxide的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = free.sulfur.dioxide),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")# 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并保存到變量p2中 p2 <- p1+scale_x_log10()# 繪制變量total.sulfur.dioxide的直方圖 # 并將其保存到變量p3中 p3 <- ggplot(aes(x = total.sulfur.dioxide),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")# 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并保存到變量p4中 p4 <- p3+scale_x_log10() # 將p1,p2,p3,p4四個變量分別傳遞給grid.arrange() # 并設置兩圖形以兩列的形式展示 grid.arrange(p1,p2,p3,p4,ncol=2) # 使用summary命令分別對對變量free.sulfur.dioxide,total.sulfur.dioxide進行匯總統計 summary(pf$free.sulfur.dioxide) summary(pf$total.sulfur.dioxide)游離二氧化硫與總的二氧化硫分布相似,呈右偏態,對其進行對數轉換。游離二氧化硫75%的數據在21 mg / dm^3 以下,總二氧化硫75%的數據在62 mg / dm^3 以下。
# 在變量free.sulfur.dioxide的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = free.sulfur.dioxide),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth = 2,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(1,72),breaks = seq(1,72,5))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol = 2) # 按照兩列來展示圖形 # 在變量total.sulfur.dioxide的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = total.sulfur.dioxide),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth = 10,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(6,289),breaks = seq(6,289,30))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol = 2) # 按照兩列來展示圖形游離二氧化硫的6個直方圖分布中,大部分酒的游離二氧化硫分布在1 ~ 36 mg / dm^3,其中評分為3分及8分的分布較分散。
從總二氧化硫的分布中看到,除了評分較低的3分酒總二氧化硫分布較散且低于66 mg / dm^3 外,其余酒的總二氧化硫含量大部分處于6 ~ 96 mg / dm^3 范圍。
從統計匯總及箱線圖來觀察,其中位數忽高忽低,無法判斷與酒質量的關聯性。箱線圖中紅色點分別代表基于quality分組下的游離二氧化硫與總二氧化硫的平均值。
density探索
# 繪制變量density的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = density),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA") # 繪制變量pH的直方圖 # 并將其保存到變量p2中 p2 <- ggplot(aes(x = pH),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")# 將p1,p2兩個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,ncol = 1) # 使用summary命令分別對對變量density,pH進行匯總統計 summary(pf$density) summary(pf$pH)密度與pH值的分布呈正太分布,大部分酒的密度處于0.995 ~ 1 g / cm^3 之間。大部分酒的ph值處于3 ~ 3.5之間。
# 在變量density的直方圖基礎上添加facet_wrap層 # 通過變量quality將直方圖分割為6個直方圖 ggplot(aes(x = density),data = pf)+# 為每個直方圖設置組距并填充顏色geom_histogram(binwidth = 0.001,color = "#696356",fill = "#CACACA")+# 為每個直方圖設置limits & breaksscale_x_continuous(limits = c(0.990,1.01),breaks = seq(0.990,1.01,0.004))+# 設置標度scale為“free”,各直方圖坐標軸數據可以不相同facet_wrap(~quality,scales = "free",ncol = 2) # 按照兩列來展示圖形質量評分為4 ~ 7分的酒,其密度分布近似正太.
數據集中在0.994 ~ 0.998 g / cm^3 之間,評分為3和8的酒有點分散,但是分布還是蠻均勻的.
3分的酒密度處于0.994 ~ 1.002 g / cm^3 之間,8分的酒密度處于0.992 ~ 1 g / cm^3 之間。
評分4 ~ 6的酒其ph值分布近似正太,3 ~ 4分的酒其ph值主要分布在3.2 ~ 3.7之間,5 ~ 8分的酒其ph值主要分布在3.1 ~ 3.5之間。
# 通過by命令統計出不同quality的density和pH匯總 by(pf$density,pf$quality,summary) by(pf$pH,pf$quality,summary)
從統計數據及箱線圖看出,酒的密度中位數及平均數隨著酒質量的提高有增有減,無法判斷其與酒質量之間的關聯性,酒的ph值同理。
sulphates探索
# 繪制變量sulphates的直方圖 # 并將其保存到變量p1中 p1 <- ggplot(aes(x = sulphates),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")+# 添加scale_x_continuous層# 并設置limits & breaksscale_x_continuous(limits = c(0.3,2),breaks = seq(0.3,2,0.2)) # 添加scale_x_log10()層,對長尾數據進行對數轉換 # 并保存到變量p2中 p2 <- p1+scale_x_log10() # 將p1,p2兩個變量分別傳遞給grid.arrange() # 并設置兩圖形以一列的形式展示 grid.arrange(p1,p2,ncol = 1) # 使用summary命令對變量sulphates進行匯總統計 summary(pf$sulphates)酒的硫酸鹽分布偏右太,對其進行對數轉換,轉換之后分布近似正太。數據集中在0.5 ~ 0.9 g /dm3 之間。
# 通過by命令統計出不同quality的sulphates匯總 by(pf$sulphates,pf$quality,summary) # 通過ggplot繪制變量quality與變量sulphates的箱線圖 # 變量quality需要轉換為factor類型 ggplot(aes(x = factor(quality),y = sulphates),data = pf)+# 箱線圖geom_boxplot()+# 通過stat_summary函數添加不同組的平均值# 同時設置平均值以散點圖的形式與箱線圖疊加# 設置點的顏色,形狀及大小stat_summary(fun.y = 'mean',geom = 'point',color='red',shape=8,size=4)+# 添加coord_trans圖層限制y軸coord_trans(limy = c(0.3,1.2))從匯總統計及箱線圖來看,隨著酒質量的提高,酒的硫酸鹽中位數與平均數也相應提高,硫酸鹽與酒質量關系需要進一步探索。
alcohol探索
# 通過ggplot函數來繪制變量alcohol的直方圖ggplot(aes(x = alcohol),data = pf)+# 填充顏色geom_histogram(color = "#696356",fill = "#CACACA")+# 添加scale_x_continuous層# 并設置limits & breaksscale_x_continuous(limits = c(8,15),breaks = seq(8,15,1))酒精分布也偏右太,大部分數據集中于9~11%之間。
# 使用summary命令對變量alcohol進行匯總統計 summary(pf$alcohol) # 通過by命令統計出不同quality的alcohol匯總 by(pf$alcohol,pf$quality,summary) # 通過ggplot繪制變量quality與變量alcohol的箱線圖 # 變量quality需要轉換為factor類型 ggplot(aes(x = factor(quality),y = alcohol),data = pf)+# 箱線圖geom_boxplot()+# 通過stat_summary函數添加不同組的平均值# 同時設置平均值以散點圖的形式與箱線圖疊加# 設置點的顏色,形狀及大小stat_summary(fun.y = 'mean',geom = 'point',color='red',shape=8,size=4)
從匯總統計及箱線圖分布來看,酒精的中位數與平均值隨著酒質量的提高而增加,需要進一步探索酒精與質量間的關系。
單變量分析
你的數據集結構是什么?
數據集中有1599條紅葡萄酒記錄,有13個變量,其中x為紅葡萄酒編號,11個紅葡萄酒理化特征(固定酸、揮發性酸、檸檬酸、剩余糖分、氯化物、游離二氧化硫、總二氧化硫、密度、pH值,硫酸鹽和酒精)1個基于感覺判斷的輸出變量–質量。
你的數據集內感興趣的主要特性有哪些?
最感興趣的特征是紅葡萄酒的質量,我想確定哪些化學成分最能影響紅葡萄酒的質量。
你認為數據集內哪些其他特征可以幫助你探索興趣特點?
從直方圖的分布來看,我認為揮發性酸、檸檬酸、氯化物、硫酸鹽、酒精與質量應該有關聯,需要進一步探索。
根據數據集內已有變量,你是否創建了任何新變量?
基于現有數據,可以滿足探索需求。
在已經探究的特性中,是否存在任何異常分布?你是否對數據進行一些操作,如清潔、調整或改變數據的形式?如果是,你為什么會這樣做?
除了密度,ph值及酒精外,其余數據為長尾數據,我對其進行了對數轉換。
雙變量繪圖選擇
我們使用gpairs來創建散點圖矩陣。
gpairs(pf,# 令矩陣的上三角為統計量,統計相關系數upper.pars = list(scatter = 'stats'),# 設置統計量的顯示屬性stat.pars = list(fontize = 9, # 字體大小為9signif = 0.05, # 顯著性水平0.05verbose = F, # verbose取值為F時# 只顯示pearson相關系數use.color = T), # use.color取值為T時#上三角格子的背景色與pearson相關系數有關,正數為藍色,負數為紅色,絕對值越大顏色越深。# 令矩陣的下三角為光滑回歸lower.pars = list(scatter = "loess"),diagonal = "default", # 對角線上顯示變量名#設置對角線屬性diag.pars = list(fontsize = 9,# 字體大小為9show.hist = TRUE, # 顯示直方圖hist.color = '#17BECF'),# 直方圖顏色為黑色# 設置軸的屬性axis.pars = list(n.ticks = 5, # 軸刻度數量為5fontsize = 9)) # 軸刻度標簽字體大小為9這是我們的散點圖矩陣,可從矩陣的上半部分看到變量對的相關系數,下半部分是變量對散點圖矩陣的圖表。對角線上是變量分布。我們的目標是了解哪些成分影響紅葡萄酒的質量,從各變量與質量的相關系數可以看到,酒精,硫酸鹽,剩余糖分,檸檬酸,固定酸與質量呈正相關,其余變量與質量呈負相關。按照經驗法則,關聯大于0.3或小于-0.3表示有意義但是較小。0.5附近為中等,0.7或以上為很大.所以我們主要關注酒精,揮發性酸與質量的相關性。因為這兩隊變量的相關系數大于0.3或小于-0.3.
另外,關于pH與固定酸及酒精與密度之間的關系,同樣比較感興趣,可以進一步探索。
揮發性酸與質量的關系探索
# 通過ggplot函數繪制揮發性酸與質量的散點圖 ggplot(aes(x = quality ,y = volatile.acidity),data = pf)+# 通過geom_jitter添加抖動,并填充顏色geom_jitter(color = "#73B4D2")+# 將箱線圖與散點圖進行疊加,以變量quality進行分組,設置透明度geom_boxplot(aes(group = quality),alpha = 0.4)+# 將折線圖與散點圖疊加,將geom_line添加到圖形中來實現geom_line(stat = "summary", # 將傳遞參數stat,并設置它等于匯總fun.y = mean)+ # 將匯總給y的一個函數,此處傳遞平均值,并將其應用于y# 向圖形中添加90%分位數geom_line(stat = "summary",fun.y= quantile, # 添加分位數函數fun.args = list(probs = .9), # 90%分位數linetype = 2, # 線型為2color = "blue")+ # 顏色為藍色# 向圖形中添加10%分位數geom_line(stat = "summary",fun.y= quantile, # 添加分位數函數fun.args = list(probs = .1), # 10%分位數linetype = 2, # 線型為2color = "purple")+ # 顏色為紫色# 向圖形中添加50%分位數,即中位數geom_line(stat = "summary",fun.y= quantile,# 添加分位數函數fun.args = list(probs = .5), # 50%分位數linetype = 2, # 線型為2color = "red")+ # 顏色為紫色# 添加平滑器geom_smooth(method = "lm", #將方法設置為lm,即線性模型color = "red")+ #著色為紅色# 添加scale_x_continuous,設置breaksscale_x_continuous(breaks = seq(3,8,1)) # 通過cor.test用數字來量化兩者的相關性 with(pf,cor.test(quality,volatile.acidity,method = "pearson"))將匯總數據10%,50%,90%分位數,及平均值添加到原始散點圖中。我們發現,隨著酒質量水平的提升,各匯總數據均表現出減少的趨勢。同時,向圖形添加一個平滑器,并且也使用了一個數字來量化兩者間的關系。發現揮發性酸與質量呈負相關性,并且該相關性有意義。
酒精與質量的關系探索
# 通過ggplot函數繪制酒精與質量的散點圖 ggplot(aes(x = quality ,y = alcohol),data = pf)+# 通過geom_jitter添加抖動,并填充顏色geom_jitter(color = "#73B4D2")+# 將箱線圖與散點圖進行疊加,以變量quality進行分組,設置透明度geom_boxplot(aes(group = quality),alpha = 0.4)+# 將折線圖與散點圖疊加,將geom_line添加到圖形中來實現geom_line(stat = "summary", # 將傳遞參數stat,并設置它等于匯總fun.y = mean)+ # 將匯總給y的一個函數,此處傳遞平均值,并將其應用于y# 向圖形中添加90%分位數geom_line(stat = "summary",fun.y= quantile, # 添加分位數函數fun.args = list(probs = .9), # 90%分位數linetype = 2, # 線型為2color = "blue")+ # 顏色為藍色# 向圖形中添加10%分位數geom_line(stat = "summary",fun.y= quantile, # 添加分位數函數fun.args = list(probs = .1), # 10%分位數linetype = 2, # 線型為2color = "purple")+ # 顏色為紫色# 向圖形中添加50%分位數,即中位數geom_line(stat = "summary",fun.y= quantile,# 添加分位數函數fun.args = list(probs = .5), # 50%分位數linetype = 2, # 線型為2color = "red")+ # 顏色為紫色# 添加平滑器geom_smooth(method = "lm", #將方法設置為lm,即線性模型color = "red")+ #著色為紅色# 添加scale_x_continuous,設置breaksscale_x_continuous(breaks = seq(3,8,1)) # 通過cor.test用數字來量化兩者的相關性with(pf,cor.test(quality,alcohol,method = "pearson"))同理,我們用相同的方法來探索酒精與質量的關系,我們發現,品質好的酒,其酒精度通常要高,相反,品質差的酒,其酒精度要低,從以上的圖形及數字衡量來看,酒精與質量呈正相關關系。
pH與固定酸的探索
# 通過ggplot函數繪制pH與固定酸的散點圖 ggplot(aes(x = pH, y = fixed.acidity),data = pf)+# 添加抖動,設置透明度geom_jitter(alpha = 1/5)+# 添加平滑器geom_smooth(methods = "lm", #將方法設置為lm,即線性模型color = "red") # 著色為紅色 # 通過cor.test用數字來量化兩者的相關性 with(pf,cor.test(pH,fixed.acidity,method = "pearson"))
從上述的圖形分析,我們發現pH與固定酸呈負相關性,pH值越低,葡萄酒中的酸度越高。pH值是衡量葡萄酒中酸度的一個標準,而酸度是體現葡萄酒中含酸量的程度,若是欠缺酸度,酒質就會顯得相當松散。之后我們會繼續探索,不同酒質的pH值與酸度變化。
雙變量分析
探討你在這部分探究中觀察到的一些關系。這些感興趣的特性與數據集內其他特性有什么區別?
因為我們的目標是研究哪些變量對酒品質有影響,所以重點關注與質量關系密切的變量,比如酒精與質量,揮發性酸與質量之間的關系。
而其它變量間的關系,我們也同樣感興趣并進行了探索,像酒中的pH值與固定酸的關系。
你是否觀察到主要特性與其他特性之間的有趣關系?
揮發性酸越低,酒品質越好,反之亦然。酒精度越高,酒的品質越好,反之亦然。而pH值與揮發性酸呈負相關關系。
你發現最強的關系是什么?
酒中的揮發性酸與酒品質呈負相關性,酒精度與酒的品質呈正相關性。
多變量繪圖選擇
# 繪制pH與固定酸的散點圖,并在此基礎上添加第三個變量qualityggplot(data = pf,aes(x=pH, y=fixed.acidity,color=factor(quality)))+# 設置散點圖大小geom_point(size=2)+# 添加平滑器geom_smooth(method = 'lm', #將方法設置為lm,即線性模型se = FALSE, # 去掉擬合線的陰影size=2)+ #設置平滑線大小# 使用顏色擴展包RColorBrewer中的配色方案scale_color_brewer(type='div', # div,生成用深色強調兩端,淺色標示中部的系列顏色guide = guide_legend(title = 'Quality'))+ # 設置圖例# 加深圖形的背景色theme_dark()+# 設置圖形標題ggtitle('pH and fixed acidity of red wine based on Quality')+# 設置Y軸標簽labs(y='fixed acidity (tartaric acid - g/dm^3)')之前我們探討了pH值與固定酸的關系,二者呈負相關性,我們加入第三個變量質量,。當pH值小于3大于2.75時,好品質的酒其固定酸要高于低品質的酒,當pH值高于3.5時,高品質酒的固定酸低于低品質酒的固定酸。
# 繪制酒精與揮發性酸的散點圖,并在此基礎上添加第三個變量qualityggplot(data = pf,aes(x=alcohol,y=volatile.acidity,color=factor(quality)))+# 設置散點圖大小geom_point(size=2)+# 添加平滑器geom_smooth(method = 'lm',#將方法設置為lm,即線性模型se = FALSE, # 去掉擬合線的陰影size=2)+ #設置平滑線大小# 使用顏色擴展包RColorBrewer中的配色方案scale_color_brewer(type='div', # div,生成用深色強調兩端,淺色標示中部的系列顏色guide = guide_legend(title = 'Quality'))+ # 設置圖例# 加深圖形的背景色theme_dark()+# 設置圖形標題ggtitle('alcohol and volatile.acidity of red wine based on Quality')+# 設置Y軸標簽labs(y='volatile.acidity (tartaric acid - g/dm^3)')從上圖可以看出,較高酒精度與較低揮發酸結合起來可以產生高品質的葡萄酒。
多變量分析
探討你在這部分探究中觀察到的一些關系。通過觀察感興趣的特性,是否存在相互促進的特性?
酒精度與揮發性酸兩個變量相互配合,促使好品質的葡萄酒產生。
這些特性之間是否存在有趣或驚人的聯系呢?
相較于pH大于3.5的酒,pH值較低的葡萄酒,其酒液中微生物的生長能得到有效的抑制,酒體和風味等能保持相對穩定的狀態,故酒質較好。而pH較大的酒中,含酸量可能較小,會影響酒的口感,所以有必要在不同的工藝水平下,調整pH以達到酒質最大化。
選項:你是否創建過數據集的任何模型?討論你模型的優缺點。
------沒有
定稿圖與總結
繪圖一
# 通過ggplot函數來繪制變量quality的條形圖ggplot(data = pf, aes(x=factor(quality))) +# 填充顏色geom_bar(color = "#696356",fill = "#CACACA")+# 設置標簽及標題labs(x = 'Quality', y = 'Frequency', title = 'Bargraph for quality of red wines')描述一
該數據集中的質量評分是葡萄酒專家至少3次評估的中位數,每個專家都對葡萄酒的質量打分,介于0(非常差)和10(非常好)之間。該條形圖展示了該數據集中紅葡萄酒的質量評分分布情況,其近似于正太分布,數據集中分布在5~6分,最大值8分,最小值3分。
繪圖二
p1 <- # 通過ggplot函數繪制揮發性酸與質量的散點圖 ggplot(aes(x = quality ,y = volatile.acidity),data = pf)+# 通過geom_jitter添加抖動,并填充顏色geom_jitter(color = "#73B4D2")+# 將箱線圖與散點圖進行疊加,以變量quality進行分組,設置透明度geom_boxplot(aes(group = quality),alpha = 0.4)+# 添加平滑器geom_smooth(method = "lm", #將方法設置為lm,即線性模型color = "red")+ #著色為紅色# 添加scale_x_continuous,設置breaksscale_x_continuous(breaks = seq(3,8,1))+# 添加標簽及標題labs(x = "Quality",y = "volatile acidity (acetic acid g/dm^3)",title = "The linear relationship between volatile acidity and quality")p2 <- # 通過ggplot函數繪制酒精與質量的散點圖ggplot(aes(x = quality ,y = alcohol),data = pf)+# 通過geom_jitter添加抖動,并填充顏色geom_jitter(color = "#73B4D2")+# 將箱線圖與散點圖進行疊加,以變量quality進行分組,設置透明度geom_boxplot(aes(group = quality),alpha = 0.4)+# 添加平滑器geom_smooth(method = "lm", #將方法設置為lm,即線性模型color = "red")+ #著色為紅色# 添加scale_x_continuous,設置breaksscale_x_continuous(breaks = seq(3,8,1))+# 添加標簽及標題labs(x = "Quality",y = "Alcohol (% by volume)",title = "The linear relationship between alcohol and quality ")grid.arrange(p1,p2,ncol = 1)描述二
隨著對數據進一步探索,發現在這些理化指標中酒精與揮發性酸對酒品質的影響比較大。揮發性酸與質量呈負相關性,酒精與質量呈正相關性。
繪圖三
# 繪制pH與固定酸的散點圖,并在此基礎上添加第三個變量qualityggplot(data = pf,aes(x=pH, y=fixed.acidity,color=factor(quality)))+# 設置散點圖大小geom_point(size=2)+# 添加平滑器geom_smooth(method = 'lm', #將方法設置為lm,即線性模型se = FALSE, # 去掉擬合線的陰影size=2)+ #設置平滑線大小# 使用顏色擴展包RColorBrewer中的配色方案scale_color_brewer(type='div', # div,生成用深色強調兩端,淺色標示中部的系列顏色guide = guide_legend(title = 'Quality'))+ # 設置圖例# 加深圖形的背景色theme_dark()+# 設置圖形標題ggtitle('pH and fixed acidity of red wine based on Quality')+# 設置Y軸標簽labs(y='fixed acidity (tartaric acid-g/dm^3)')描述三
隨著探索的深入,將質量作為分類變量加入到pH值與固定酸的關系中后,發現了一個有趣的現象,當pH值小于3大于2.75時,好品質的酒其固定酸要高于低品質的酒,當pH值高于3.5時,高品質酒的固定酸低于低品質酒的固定酸,在不同的生產工藝及生產過程中,合理的控制pH值,權衡其與酸度間的關系,則可以更好的提升葡萄酒的質量及穩定性。
反思
首先我將本次報告的分析做一個小結:
單變量探索:通過繪制每個變量的直方圖來觀察數據,但是除了密度與pH的分布近似正太分布之外,其余變量都是右偏太,同時還伴有異常值的存在,于是對這些變量進行了對數轉換。除了檸檬酸之外,其余變量都在對數轉換后近似正太分布。為了弄明白哪些變量影響酒的品質,從單變量探索中得出的初步結論是硫酸鹽,氯化物,檸檬酸,酒精,揮發性酸可能對酒品質有影響。
雙變量探索:在這個階段,通過矩陣散點圖生成的散點圖及變量對的相關系數,最終確定出對酒品質影響最大的變量是揮發性酸和酒精。揮發性酸與質量呈負相關性,酒精與質量呈正相關性。令人吃驚的是,硫酸鹽,氯化物,檸檬酸與質量的相關性幾乎可以忽略。同時也對比較感興趣的pH和固定酸間的關系進行了探索,發現pH值與揮發性酸呈負相關性。
多變量探索:這時我將變量質量加入到了pH值與揮發性酸的關系中,發現了有趣的現象當pH值小于3大于2.75時,好品質的酒其固定酸要高于低品質的酒,當pH值高于3.5時,高品質酒的固定酸低于低品質酒的固定酸。
####對數據集進行探索分析的過程中讓我更進一步的了解了葡萄酒的制作工藝及酒的一些特性。同時也伴有驚喜與意外。
另外,由于此數據集的數據量有限,基于此基礎上的結論也會受限。如果有更多的紅葡萄酒的數據集及各種品類酒的數據集,相信會有更多的意想不到的結論出現。
參考資料:
https://bbs.pinggu.org/thread-4443996-1-1.html 相關分析矩陣圖——字體調整和顯著性添加?
https://baijiahao.baidu.com/s?id=1597536788569515490&wfr=spider&for=pc 了解葡萄酒四個基礎知識
https://baijiahao.baidu.com/s?id=1569297280488873&wfr=spider&for=pc 葡萄酒基礎知識
https://www.cnblogs.com/wkslearner/p/5715095.html ggplot2 分面相關設置(facet)
http://www.wine-world.com/culture/zt/20180228114751617 葡萄酒的pH值重要嗎?
總結
- 上一篇: 秩和比RSR法算法C语言,秩和比法(用秩
- 下一篇: 软考 java程序设计,软考程序员考点J