天天看點

R語言快餐教程(1) - 我們開始做統計吧R語言快餐教程(1) - 我們開始做統計吧

r語言是基于s語言的一種開源實作。s語言是貝爾實驗室最早開發的一種用于統計的工具,後來成為商業的s-plus軟體,是一種與sas和spss齊名的統計軟體。

r語言的一個重要的優勢就是r的生态,有大量的高品質的第三方的統計和算法相關的包。

首先我們學習如何在r中擷取函數幫助和函數的例子。

help(函數名)

例:比如我們想知道标準差函數sd的用法:

輸出就是标準差函數的用法資訊:

r對于很多函數都有非常詳盡的例子,對于圖形類的函數,還圖文并茂。

格式:example(函數名)

例:

大家可以試試圖形的函數,如:

寫好的r檔案,可以通過source("filename.r")的形式裝載進來。

可以通過save函數将r的記憶體資料儲存到一個rdata檔案中。下次再通過load()函數讀取出來。

我們在學習r的文法之前,就先學習如何下載下傳擴充包,因為将來有很多任務,我們就是要靠擴充包來完成的。

指令:install.packages("包名")

下載下傳了之後,還需要在使用之前通過library()函數将庫裝載進來:

比如我要使用timedate庫:

既然要處理資料,肯定要先從資料源讀取資料。我們選取最簡單的方式,從csv檔案中讀取。

假設我們有這樣一個csv檔案:

我們使用read.csv函數将其讀到gun

c()函數用于生成向量。r語言中沒有标量,看着來像标量的,其實也是長度為1的向量。

讀到gun_data中後,就可以通過行和列來通路資料了。

可以用下标通路:

可以用雙括号加下标通路:

可以用列名通路

ls()函數

下面我們開始學一些短平快的做統計的方法吧。

最簡單的就是平均值了。所有的數求和,再除以個數就是了。

r語言中用mean()函數來求均值。

均值的問題在于,如果異常值比較大,會把均值拉高或拉低。而中位數是排序後處于中間的數,不受異常值的影響。

r語言中用median函數求中位數:

所謂五數,就是最小值,25%分位值,中位數,75%分位值,最大值。

這五個數可以通過fivenum()函數一次性求出來。

連同均值,summary函數能一次将6個數都求出來:

方差是各樣本值與均值的內插補點的平方的和,反映了資料的離散程度。

方差的平方根是标準差。r語言用sd()函數求标準差

标準差是方差的平方根,我們用r語言驗證一下:

果然跟sd()的值是一樣的

離差是r中提供的一個特殊功能,它是相對于中位數的偏差的絕對值和:

離差用mad()函數計算。

如果結果不符合正态分布,我們希望知道是向左偏還是向右偏,這個值用偏度skewness來表示。r中用skewness()函數來計算。如果值>0為右偏,反之為左偏。

求偏度的函數,首先要通過install.packages來下載下傳fbasics庫,然後引入timedate庫:

從中可以看以,這兩組資料都向右偏。gun_data4偏得更厲害。

峰度是判斷這個分布是比正态分布的圖更尖還是更平。

r中用kurtosis()函數來計算

上面的兩個分布都>0,說明比正态分布都要尖。