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,說明比正态分布都要尖。