日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

發布時間:2024/9/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《机器学习与R语言(原书第2版)》一2.3 探索和理解数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節書摘來自華章出版社《機器學習與R語言(原書第2版)》一書中的第2章,第2.3節,美] 布雷特·蘭茨(Brett Lantz) 著,李洪成 許金煒 李艦 譯更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。

2.3 探索和理解數據

在收集數據并把它們載入R數據結構以后,機器學習的下一個步驟是仔細檢查數據。在這個步驟中,你將開始探索數據的特征和案例,并且找到數據的獨特之處。你對數據的理解越深刻,你將會更好地讓機器學習模型匹配你的學習問題。
理解數據探索的最好方法就是通過例子。在本節中,我們將探索usedcars.csv數據集,它包含在流行的美國網站上最近發布的關于二手車打折銷售廣告的真實數據。
usedcars.csv數據集能在Packt出版社網站的本書支持頁面上下載。如果你要和例子一起操作,一定要確保這個文件下載且保存在你的R工作目錄中。
因為數據集存儲為CSV形式,所以我們能用read.csv()函數把數據載入R數據框中:

有了usedcars數據框,現在我們將擔任數據科學家的角色,任務是理解二手車數據。盡管數據探索是一個不確定的過程,但可以把這個步驟想象成一個調查過程,在這個步驟中回答關于數據的問題。具體的問題可能會因任務的不同而有所不同,但問題的類型一般是相似的。不管數據集的大小,你應該能把這個調查的基本步驟應用到任何你感興趣的數據集中。

2.3.1 探索數據的結構

調查一個新數據集的第一個問題應該是數據是怎么組織的。如果你足夠幸運,數據源會提供一個數據字典,它是一個描述數據特征的文檔。在我們的例子里,二手車數據并不包含這個文件,所以我們需要創建我們自己的數據字典。
函數str()提供了一個顯示數據框、向量和列表這樣的R數據結構的方法。這個函數可以用來創建數據字典的基本輪廓:


使用這樣一條簡單的命令,我們就知道了關于數據集的大量信息。語句150 obs告訴我們數據包含150個觀測值,這是數據包含150個記錄或例子的另一種說法。觀測值的數量一般簡寫為n。因為我們知道數據描述的是二手車,所以現在可以認為供銷售的車有n=150輛。
語句6 variables指的是數據中記錄了6個特征。這些特征根據名稱排列成獨立的行。查看特征color所在的那一行,我們注意到一些額外的信息:

在變量名的后面,chr告訴我們這個特征是字符型的。在這個數據集中,3個變量是字符型,另外3個注明是int,表明是整數型。盡管這個數據集僅包含整數型和字符型,但當使用非整數型數據時,你還可能碰到數值型num。所有因子都列為factor型。在每個變量類型的后面,R給出這個特征的最前面的幾個值。值"Yellow"、"Gray"、"Silver"和"Gray"是color特征的前4個值。
根據相關領域知識,特征名稱和特征值可以使我們對變量所代表的含義做出假定。變量year可能指汽車制造的時間,也可能指汽車廣告貼出的時間。接下來我們將更加仔細地調查這個特征,因為這4個案例值(2011 2011 2011 2011)適用于上述任何一個可能性。變量model、price、mileage、color和transmission極有可能指的是銷售汽車的特征。
盡管數據似乎被賦予了有內在含義的變量名,但實際應用中并不是所有的數據都是這樣的。有時候,數據集的特征可能是沒有具體含義的名稱、代號或者像V1這樣的簡單數字。通過進一步調查,確定特征名稱確切代表的含義是必不可少的。然而,即使特征名稱有具體的含義,也要謹慎檢查提供給你的標簽含義的正確性。我們繼續進行下面的分析。

2.3.2 探索數值變量

為了調查二手車數據中的數值變量,我們將使用一組普遍使用的描述數值的指標,它們稱為匯總統計量。summary()函數給出了幾個常用的匯總統計量。我們看看二手車數據中的year特征:

即使你對匯總統計量不熟悉,你也能從summary()函數輸出結果的標題中猜出一些。現在先不管特征year所代表的具體含義,事實上,當我們看到諸如2000、2008以及2009這樣的數字時,我們相信變量year表示汽車制造的時間而不是汽車廣告打出的時間,因為我們知道汽車是最近才掛牌出售的。
我們也能使用summary()函數同時得到多個數值變量的匯總統計量:

summary()函數提供的6個匯總統計量是探索數據簡單但強大的工具。匯總統計量可以分為兩種類型:數據的中心測度和分散程度測度。
1.測量中心趨勢—平均數和中位數中心趨勢測度是這樣一類統計量,它們用來標識一組數據的中間值。你應該已經熟悉常用的一個測量中心趨勢的指標—平均數。在一般使用中,當一個數被認為是平均數時,它落在數據的兩個極值之間的某個位置。一個中等學生的成績可能落在他的同學成績的中間;一個平均體重不會是特別重或者特別輕。平均數是具有代表性的,它和組里的其他值不會差得太多。你可以把它設想成一個所有其他值用來進行參照的值。
在統計學中,平均數也叫作均值,它定義為所有值的總和除以值的個數。例如,要想計算收入分別是$36 000、$44 000和$56 000的3個人的平均收入,我們可以如下計算:

R也提供一個mean()函數,它能計算數值向量的均值:

這組人的平均收入是$45 333.33。從概念上來說,你可以想象這個值是,如果所有收入平等分給每一個人,每個人應該得到的收入。
回憶先前的summary()函數的輸出,它列出了變量price和mileage的平均值。price的平均值為12 962,mileage的平均值為44 261,這表明數據集中具有代表性的二手車的價格應該標為$12 962,里程表的讀數為44 261。這些告訴我們數據的什么信息呢?因為平均價格相對偏低,所以可以預料我們數據中包括經濟型汽車。當然,數據中也有可能包括新型的豪華汽車,有著高里程數,但是相對較低的平均里程數的統計數據并不提供支持這個假設的證據。另一方面,數據并沒有提供證據讓我們忽略這個可能性。所以,在進一步檢驗數據時我們要留意這一點。
盡管到目前為止,均值是最普遍引用的測量數據集中心的統計量,但它不一定是最合適的。另一個普遍使用的衡量中心趨勢的指標是中位數,它位于有序的值列表的中間。和均值一樣,R提供了函數median()來獲得這個值,可以把它應用到工資數據中,如下所示:

因為中間值是44 000,所以收入的中位數是$44 000。
如果數據集有偶數個值,那么就沒有最中間值。在這種情況下,一般是計算按順序排列的值列表最中間的兩個值的平均值作為中位數。例如,1,2,3,4的中位數是2.5。
乍一看,好像中位數和均值是很類似的度量。肯定的是,均值$45 333.33和中位數$44 000并沒有太大的區別。為什么會有這兩種中心趨勢呢?這是由于落在值域兩端的值對均值和中位數的影響是不同的。尤其是均值,它對異常值,或者那些對大多數數據而言異常高或低的值,是非常敏感的。因為均值對異常值是非常敏感的,所以它很容易受到那一小部分極端值的影響而改變大小。
再回憶summary()函數輸出的二手車數據集的中位數。盡管price的均值和中位數非常相似(相差大約5%),但mileage的均值和中位數就非常不同。對于mileage來說,均值44 261比中位數36 385大了超過20%。因為均值比中位數對極端值更敏感,所以均值比中位數大很多這個事實,令我們懷疑數據集中的一些二手車有極高的mileage值。為了進一步調查這一點,我們需要在分析中應用一些額外的匯總統計量。
2.測量數據分散程度—四分位數和五數匯總
測量數據的均值和中位數給我們一個迅速概括數據的方法,但是這些中心測度在數值的大小是否具有多樣性方面給我們提供了很少的信息。為了測量這種多樣性,我們需要應用另一種匯總統計量,它們是與數據的分散程度相關的,或者說它們是與數據之間“空隙”的緊密或者松弛有關系的。知道了數據之間的差異,就對數據的最大值和最小值有了了解,同時也會對大多數值是否接近均值和中位數有了了解。
五數匯總是一組5個統計量,它們大致描述一個數據集的差異。所有的5個統計量包含在函數summary()的輸出結果中。按順序排列,它們是:
1)最小值(Min.)。
2)第一四分位數,或Q1(1st Qu.)。
3)中位數,或Q2(Median)。
4)第三四分位數,或Q3(3rd Qu.)。
5)最大值(Max.)。
如你預期的那樣,最小值和最大值是數據集中能發現的最極端的兩個值,分別表示數據的最小值和最大值。R提供了函數min()和函數max()來分別計算數據向量中的最小值和最大值。
最小值和最大值的差值稱為極差。在R中,range()函數同時返回最小值和最大值。把range()函數和差值函數diff()相結合,你能夠用一條命令來檢驗數據的極差:

第一四分位數和第三四分位數(即Q1和Q3)指的是有1/4的值小于Q1和有1/4的值大于Q3。它們和中位數(Q2)一起,3個四分位數把一個數據集分成4部分,每一部分都有相同數量的值。
四分位數是分位數的一種特殊類型,分位數把數據分為相等數量的數值。除了四分位數外,普遍使用的分位數包括三分位數(分成3部分)、五分位數(分成5部分)、十分位數(分成10部分)和百分位數(分成100部分)。
百分位數通常用來給數據進行等級評定。例如,一個學生的考試成績排列在百分位數的第99分位數,說明他表現得比其他99%的測試者好。
我們對Q1和Q3之間的50%的數據特別感興趣,因為它們就是數據分散程度的一個測度。Q1和Q3之間的差稱為四分位距(Inter Quartile Range,IQR),可以用函數IQR()來計算,例如:

我們也能從summary()輸出的usedcars$price變量的結果來手動計算這個值,即計算14 904-10 995=3909。我們計算的值與IQR()輸出結果之間有差別,這是因為R自動對summary()輸出結果進行四舍五入。
quantile()函數提供了穩健的工具來給出一組值的分位數。默認情況下,quantile()函數返回五數匯總的值。把這個函數應用到二手車數據中,將產生與前面一樣的統計量:

當計算分位數時,有很多種方法處理并列數值和沒有中間值的數據集。通過指定type參數,quantile()函數能夠在9個不同算法之間選擇計算分位數的方法。如果你的項目要求一個精確定義的分位數,使用?quantile命令來閱讀該函數的幫助文件是很重要的。
如果我們指定另一個probs參數,它用一個向量來表示分割點,我們能就得到任意的分位數,比如第1和第99的百分位數可以按如下方式求得:

序列函數seq()用來產生由等間距大小的值構成的向量。這個函數使得獲得其他分位數變得很容易,比如要想輸出五分位數(5個組),可以使用如下所示的命令:

由于理解了五數匯總,所以我們重新檢查對二手車數據應用函數summary()的輸出結果。對變量price,最小值是$3800、最大值是$21 992。有趣的是,最小值和Q1之間的差是$7000,與Q3和最大值的差是一樣的。然而,Q1和中位數的差,以及中位數和Q3的差大約是$2000。這就表明上、下25%的值的分布比中間50%的值更分散,似乎中心周圍的值聚集得更加緊密。沒有意外的是,我們從變量mileage也看到了相似的趨勢。在本章后面你將學到,這個分散模式非常普遍,此時稱數據為“正態”分布。
mileage變量的分散程度同時也呈現了另一個有趣的性質:Q3和最大值之間的差遠大于最小值和Q1之間的差。換句話說,較大的值比較小的值更分散。
這個發現解釋了均值遠大于中位數的原因。因為均值對極端值更敏感,所以均值會被極端大的值拉高,而中位數則相比變化不大。這是一個很重要的性質,當數據可視化地呈現出來時就更顯而易見。
3.數值變量的可視化—箱圖
可視化數值變量對診斷數據問題是有幫助的。一種對五數匯總的常用可視化方式是箱圖(或者稱為箱須圖)。箱圖以一種特定方式顯示數值變量的中心和分散程度,這種方式使你能很快了解變量的值域和偏度,或者它還可以和其他變量進行比較。
下面觀察二手車數據的變量price和變量mileage的箱圖。要想得到一個變量的箱圖,可以使用函數boxplot()。我們也將指定一些其他參數—main和ylab,它們分別為圖形加一個標題和為y軸(即垂直軸)加一個標簽。創建變量price和變量mileage箱圖的命令是:

R將產生下面的圖形:

箱圖使用水平線和點來表示五數匯總值。在每個圖的中間,構成盒子的水平線從下向上,依次代表Q1、Q2(中位數)和Q3。中位數用粗黑線表示,對于變量price,這條線在垂直軸上的縱坐標是$13 592;對于變量mileage,這條線的垂直坐標是36 385。
在如上圖所示的簡單箱圖中,箱圖的寬度是任意的,它不能說明任何數據特征。為了滿足更加復雜分析的需要,用盒子的形狀和尺寸,對多組數據進行比較是可能的。要想知道更多關于箱圖的這種特征的信息,可以通過?boxplot命令,查詢R中boxplot()函數的幫助文件中的notch和varwidth選項。
最小值和最大值是用細線(whisker)來表示的,就是在盒子下面和上面的細線。然而,通常僅允許細線延伸到最小為低于Q1的1.5倍IQR的最小值,或者延伸到最大為高于Q3的1.5倍IQR的最大值。任何超出這個臨界值的值都認為是異常值,并且用圓圈或者點來表示。例如,變量price的IQR是3909,Q1是10995,Q3是14904。因此異常值是任何小于10 995-1.5×3909=5131.5或者大于14 904+1.5×3909=20 767.5的值。
箱圖在高端和低端都會出現這類異常值。在mileage的箱圖中,在低端沒有這樣的異常值,所以底部的細線延伸到最小值4867。在高端,我們看到了幾個比100 000英里大的異常值。那些異常值就可以解釋我們前面探索中所發現的問題,即解釋了均值遠大于中位數。
4.數值變量可視化—直方圖
直方圖(histogram)是另一種形象化描述數值變量間差異的方式。它和箱圖相似的地方在于,它也把變量值按照預先設定的份數進行分隔,或者說按照預先定義的容納變量值的分段進行分隔。兩者的相似性就是這些。一方面,箱圖要求4部分數據的每部分必須包含相同數量的值,根據需要分段也可以變寬或變窄。另一方面,直方圖可以有相同寬度的任意數量的分段,但是分段可以包含不同數量的值。
可以用函數hist()為二手車數據的變量price和mileage繪制直方圖。就像我們繪制箱圖時那樣,可以用參數main來指定圖形的標題,用參數xlab標記x軸。繪制直方圖的命令如下:

產生的直方圖如下圖所示。

直方圖是由一系列的豎條組成,其高度表示落在等長的劃分數據值的分段內的數據值的個數或頻率。分割每一個豎條的垂直線,就像橫坐標的標簽一樣,表明分段內值的起始點和終點。
你可能注意到前面的直方圖中有不同數量的豎條。這是因為hist()函數試圖為給定的變量范圍找出合理數量的豎條。如果你想重寫這里的默認值,使用參數breaks。設置breaks = 10將創建等寬度的10個豎條,設置參數breaks為一個向量,如c(5000, 10000, 15000, 20000)將以給出的特定值為分隔點來創建豎條。
在變量price的直方圖上,10個豎條中的每一個都表示范圍為$2000的分段,這些分段的范圍是從$2000開始,到$14 000結束。直方圖中間最高的豎條代表的分段范圍為$12 000~$14 000,頻率是50。因為我們知道數據中有150輛汽車,其中1/3汽車的價格是為$12 000~$14 000。接近90輛汽車(超過一半)的報價為$12 000~$16 000。
變量mileage的直方圖包括8個豎條,它表明每個分段長度都是20 000英里,值域從0開始,到160 000英里結束。與變量price的直方圖不一樣,在變量mileage的直方圖中,最高的豎條不在數據的中心,而是在直方圖的左側。這個最高豎條所在的分段中有70輛車,里程表的范圍為20 000~40 000英里。
你可能也注意到了兩個直方圖的形狀有一點不同。似乎二手車price的圖形趨向于平均分布在中心的兩側,而汽車mileage的圖形則偏到了左側。這個性質稱為偏度(skew),具體來說是右偏,因為與低端的值(右側)相比高端的值(右側)更加分散。如下圖所示,偏斜數據的直方圖看上去偏到了一邊。






能在數據中快速診斷出這類模式是直方圖作為數據探索工具的優點之一。在我們檢驗其他數值數據模型的模式時,這個優點將更為重要。
5.了解數值數據—均勻分布和正態分布
描述數據的中心和分散程度的直方圖、箱圖和統計量都提供了檢驗變量分布的方法。變量的分布描述了一個值落在不同值域中的可能性大小。
如果所有值都是等可能發生的,這個分布就稱為均勻分布,例如,記錄投擲一個均勻的六邊形骰子所得結果的數據集。容易用直方圖來檢測一個均勻分布,因為其直方圖的豎條大致有一樣的高度。當用直方圖來可視化數據時,它可能如下圖所示。





需要注意的重要一點是,并非所有的隨機事件都服從均勻分布。例如,擲一個六邊重量不同的魔術骰子,將使得某些數字發生的概率比其他的大。每一次擲骰子會產生一個隨機數字,但6個數字出現的概率不相等。
例如,回到前面的二手車數據。很明顯,這個數據不是均勻分布的,因為有些值明顯比其他值發生的可能性更大。事實上,在變量price的直方圖上,可以看出中心值兩邊的值,偏離中心越遠,發生的頻率就越小,這就是一個鐘形的數據分布。這個特征在現實世界的數據中非常普遍,它成為所謂的正態分布的標志性特征。鐘形曲線的典型形狀如下圖所示。





盡管有許多非正態分布的類型,但許多現象產生的數據都可以用正態分布來描述。因此,正態分布的性質已被研究得很透徹了。
6.測量數據的分散程度—方差和標準差
分布使我們能夠用少量的參數來描述大量值的特性。描述現實生活中大量數據的正態分布,可以用兩個參數來定義:中心和分散程度。正態分布的中心可以用均值來定義,正如我們在前面使用的那樣。分散程度通過一種稱為標準差的統計量來測量。
為了計算標準差,我們必須先獲得方差,方差定義為每一個值與均值之間的差的平方的均值。用數學符號表示,一組具有n個值的變量x的方差可以通過下面的公式定義。希臘字母表示數值的均值,方差用希臘字母的平方來表示:

標準差就是方差的平方根,用來表示,如下所示:

要想在R中獲得方差和標準差,可以應用函數var()和函數sd()。例如,計算變量price與變量mileage的方差與標準差,如下所示:

當我們解釋方差時,方差越大表示數據在均值周圍越分散。標準差表示平均來看每個值與均值相差多少。
如果你用上面的公式手動計算這些統計量,你得出的結果將會與R的內置函數得出的結果略有不同。這是因為上面的公式給出的是總體方差(除以n),而R內置函數用的是樣本方差(除以n-1)。除非數據集很小,否則這兩種結果的區別是很小的。
在假設數據服從正態分布的條件下,標準差能用來快速地估計一個給定值有多大程度的偏大或者偏小。68-95-99.7規則說明在正態分布中68%的值落在均值左右1個標準差的范圍內,而95%和99.7%的值分別落在均值左右2個和3個標準差的范圍內。這個規則可以由下圖來說明。





把這個知識應用到二手車數據中,我們知道變量price的均值和標準差分別為$12 962和$3122,假設price數據是正態分布,該數據中大約有68%的車的廣告價格為$12 962-$3122=$9840到$12 962+$3122=$16 804。
盡管嚴格地說,68-95-99.7規則僅僅局限于正態分布中,但是這個基本準則能應用到所有的數據中,數值落在均值的3個標準差以外是極端罕見的事件。

2.3.3 探索分類變量

我們記得二手車數據集有3個分類變量:model、color和transmission。因為在載入數據時,我們使用了stringsAsFactors = FALSE參數,所以R把它們作為字符變量而不是自動把它們轉化成factor類型。此外,我們可能考慮把year看作分類變量。盡管把它作為數值(int)向量載入的,但是每一個year值是一個類別,該類別可以應用到多輛汽車上。
與數值數據相比,分類數據是用表格而不是匯總統計量來探索的。表示單個分類變量的表格稱為一元表。函數table()能用來產生二手車數據的一元表:

table()的輸出列出了名義變量的不同類別和屬于該類別的值的數量。由于我們知道數據集有150個二手車數據,所以我們能確定其中大約有1/3是在2010年制造的,因為49/150=0.327。
R也能在table()函數產生的表格上應用函數prop.table(),直接計算表格比例,如下所示:

函數prop.table()的結果能與其他R函數相結合來轉換輸出的結果。假設我們想要把結果用保留一位小數的百分數來表示,就可以把各個比例值乘以100,再用round()函數并指定digits = 1來實現,如下所示:

盡管它包含的信息和prop.table()函數默認的輸出結果一樣,但是相對來說這樣更容易閱讀。結果顯示Black(黑色)是最普遍的顏色,因為在廣告列出的所有汽車中將近有1/4(23.3%)是Black(黑色)的。Silver(銀灰色)與之接近,排在第二位,有21.3%;Red(紅色)是第三,有16.7%。
衡量中心趨勢—眾數
在統計術語中,一個特征(即變量)的眾數是指出現最頻繁的那個值。與均值和中位數一樣,眾數是另一個測量中心趨勢的統計量。它通常應用在分類數據中,因為均值和中位數并不是為名義變量定義的。
例如,在二手車數據中,year變量的眾數是2010,而model和color的眾數分別為SE和Black。一個變量可能有多個眾數;只有一個眾數的變量是單峰的,有兩個眾數的變量為雙峰的。有多個眾數的數據通常稱為多峰的。
盡管你可能猜測能用mode()函數得到眾數,但是R卻是用這個函數得出變量的類型(如數值型,列表等),而不是統計量眾數。相反,為了找到統計量眾數,只需要查看表格輸出結果中具有最大值的類別即可。
眾數是從定性的角度來了解數據集中的重要值。然大多數。例如,盡管Black是二手車變量color的眾數,但是Black僅占所有列出汽車的1/4。
考慮眾數時最好把它和其他的類別聯系起來。是否有一個類別占主導地位,或者多個類別占主導地位?據此,我們可能會問:最常見的值告訴我們被測量變量的哪些信息。如果Black和Silver是最普遍使用的二手車顏色,那么我們可以假設數據是從奢華汽車中得來的,這類汽車趨向于銷售更加保守的顏色;或者它們也可能是經濟型汽車,這類汽車有更少可供選擇的顏色。在我們進一步檢驗這些數據時,我們要記住這些問題。
把眾數考慮成最普遍的值,使得我們能夠把統計量眾數的概念應用到數值數據。嚴格地說,連續變量是不可能有眾數的,因為沒有兩個值可能是重復的。然而,如果我們把眾數考慮成直方圖中最高的那個豎條,就能夠討論如變量price和變量mileage的眾數。當探索數值數據時,考慮眾數是很有幫助的,特別要檢驗數據是否為多峰的。





2.3.4 探索變量之間的關系

到目前為止,我們一次只檢驗一個變量,只計算單變量統計量。在我們的研究過程中,我們列舉了當時尚不能回答的一些問題:
price數據有沒有暗示我們只檢驗了經濟類的汽車,還是檢驗的數據中也包括高里程的奢華汽車呢?
model和color數據之間的關系,提供了關于我們所檢驗的汽車類型的洞察嗎?
這類問題能通過關注二變量關系,即考慮兩個變量之間的關系來進行處理。超過兩個變量之間的關系稱為多變量關系。下面從二變量的情況開始討論。
1.變量之間關系的可視化—散點圖
散點圖是一種可視化二變量之間關系的圖形。它是一個二維圖形,將點畫在坐標平面中,該坐標平面的橫坐標x是其中一個特征的值,縱坐標y由另一個特征的值來標識。坐標平面上點的排放模式,揭示了兩個特征之間的內在關系。
為了回答變量price和mileage之間的關系,下面來分析一個散點圖。我們將使用plot()函數以及在前面繪圖中用過的標記圖形的參數main、xlab和ylab。
為了使用plot()函數,我們需要指定x向量和y向量,它們含有圖形中點子位置的值。盡管無論用哪個變量來表示x坐標和y坐標,結論都是一樣的,但是慣例規定,y變量是假定依賴于另一個變量的變量(因此稱為因變量)。因為里程表的讀數不能被賣家修改,所以它不可能由汽車的價格決定。相反,我們假設price是由里程表的里程數(mileage)決定的。因此,我們將把price作為y坐標,或者稱因變量。
繪制散點圖的全部命令如下:

這將產生下面的散點圖:






使用散點圖,我們可以了解二手車的價格和里程表的讀數之間的一個清晰關系。為了研究這張圖,我們觀察當x軸變量的值增加時,y軸變量的值是如何改變的。在這個例子中,當mileage值增加時,price值變得越來越低。如果你曾經賣過或者買過二手車,這一點不難得到。
一個更有趣的發現可能是,除了125 000英里和$14 000所構成的一個異常點以外,有很少一部分汽車同時有很高的price和很高的mileage。缺少更多這樣的點,就提供了證據來支持下列結論:數據中不可能包含高里程的奢華汽車。數據中所有貴的汽車,特別是那些$17 500以上的汽車,看上去都有超低的里程數,這暗示我們可能看到的是一類全新的賣價為$20 000的汽車。
變量price和變量mileage之間的關系是負相關的,因為散點圖是一條向下傾斜的直線。正相關看起來是形成一條向上傾斜的直線。一條水平的線,或者一個看上去隨機分布的點集,證明兩個變量完全不相關。兩個變量之間線性關系的強弱是通過統計量相關系數來測量的。相關系數在第6章中詳細討論,第6章將學習如何使用回歸方法建立線性關系。
注意不是所有的關聯都形成直線。有時,點會形成一個U形或者V形;有時,關聯模式看上去隨著x變量或者y變量的增加而變弱或者變強。這樣的模式說明兩個變量之間的關系不是線性的。
2.檢驗變量之間的關系—雙向交叉表
為了檢驗兩個名義變量之間的關系,使用雙向交叉表(two-way cross-tabulation,也稱為交叉表或者列聯表)。交叉表和散點圖相類似,它允許你觀察一個變量的值是如何隨著另一個值的變化而變化的。雙向交叉表的格式是:行是一個變量的水平,列是另一個變量的水平。每個表格的單元格中的值用來表明落在特定行、列的單元格中的值的數量。
為了回答我們關于model和color之間關系的問題,我們觀察一個交叉表。R中的多個函數都能生成雙向表,包括table()函數,我們也可以把table()函數用在單向表中。由Gregory R. Warnes創建的gmodels添加包中的CrossTable()函數可能是用戶最喜歡用的函數,因為它在一個表格中提供了行、列和邊際百分比,省去了我們要自己組合這些數據的麻煩。要想安裝gmodels添加包,輸入:

在安裝了添加包后,僅需要輸入命令library(gmodels)載入該添加包。在每次用到CrossTable()函數時,你需要在R系統中載入這個添加包。
在我們繼續分析以前,讓我們通過減少color變量中水平的數量來簡化我們的任務。這個變量有9個水平,但是我們并不是真的需要如此詳細。我們真正感興趣的是汽車的顏色是否是保守的。為此,我們把9種顏色分為兩組:第一組包括保守的顏色:Black、Gray、Silver和White;第二組包括Blue、Gold、Green、Red和Yellow。我們創建一個二元指示變量(常常稱為啞變量),根據我們的定義來表示汽車的顏色是否是保守的。如果是保守的顏色,指示變量的值就是1,否則值為0。

這里,你可能注意到一個新的命令:%in%運算符,它根據左邊的值是否在右邊的向量中,為運算符左邊向量中的每一個值返回TRUE或者FALSE。簡單地說,你可以理解為“這輛二手車的顏色是在black、gray、silver和white這組中嗎?”
觀察由table()得到的我們新建變量的輸出結果,我們看到2/3的汽車有保守的顏色,而1/3的汽車沒有保守的顏色:

現在,讓我們看看交叉表中conservative(保守)顏色汽車的比例是如何隨著model變化而變化的。因為我們假設汽車的型號決定了顏色的選擇,所以我們把conservative作為因變量(y)。CrossTable()命令的應用如下:

由此產生了下面的表格:

CrossTable()的輸出中包含了大量數據。最上面的一張圖(標示為Cell Contents)說明如何解釋每一個值。表格的行表示了二手車的3個型號:SE、SEL和SES(再加上額外的一行用來表示所有型號的匯總)。表格的列表示汽車的顏色是否是保守的(加上額外的一列表示對所有兩種顏色求和)。每個格子中的第一個值表示那個型號和那個顏色的汽車的數量。比例分別表示這個格子的卡方統計量,以及在行、列和整個表格中占的比例。
在表格中,我們最感興趣的是保守顏色汽車占每一種型號的行比例。行比例告訴我們0.654(65%)的SE汽車用保守的顏色,SEL汽車的這個比例是0.696(70%),SES汽車是0.653(65%)。這些數值的差異相對來說是較小的,這暗示不同型號的汽車選擇的顏色類型沒有顯著的差異。
卡方值指出了在兩個變量中每個單元格在皮爾森卡方獨立性檢驗中的貢獻。這個檢驗測量了表格中每個單元格內數量的不同只是由于偶然的可能性有多大。如果概率值是非常低的,那么就提供了充足的證據表明這兩個變量是相關的。
你能在引用CrossTable()函數時增加一個額外的參數,指定chisq = TRUE來獲得卡方檢驗的結果。在這個案例中,概率值是93%,暗示單元格內數量的變化很可能僅僅是由于偶然,而不是在model和color之間真的存在關聯。

總結

以上是生活随笔為你收集整理的《机器学习与R语言(原书第2版)》一2.3 探索和理解数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。