R - 統計分析起家的軟件

從前到現在,學術界最常用的統計軟件除了SPSS就是R,它之所以受歡迎,比其他程式語言,因為其結構簡單,相對容易掌握,對於一個非程式背景出身的統計學家,把心思放在數學理論,新的演算法上,多過放在程式和系統設計,R是一個非常好的選擇,雖然沒有介面,但當你想寫一些自己獨有的分析流程,你會寧願不會要 UI,反而想寫Code去達到自己的目的,這也是筆者為何喜歡Programming,花更多時間在Coding,可讓從你無盡的Routine救起。

至於筆者為何會學習R,因為多一把利器在這社會生存,R在Data Visualization會比較方便,做一些Ad hoc Analysis,可以更快的獲得結果,然後Present結果。再加上自己學校所教的是R,為了碩士順利畢業,學多一樣新的Programming也是無可避免。


安裝:
從官方網站和根據你的作業系統(OS)下載適合的安裝檔:https://cran.r-project.org/
然後你可以打開R Console開始編寫自己的R的Coding了!


Data Type
對於初心者,最好還是先多了解R的資料種類,這樣才會讓你打好根基,在之後任何的分析Routines得心應手。在R的世界,最常用或者筆者會用上的Data Type,有四大種類:Vectors, Matrix, Data Frame, Factors,基本上學會這幾個就夠了。

R中的Vectors可以當成C的Array,Python的List,都是用來儲存每一個Element,而Element可以是一組數字,文字,Boolean,不能是混合的!只需要用c()就可以宣告一個新的Vectors。
a <- c(1, 4, 2, 1)
b <- c('I', 'am', 'Horace')
c <- c('a', 'b', 3)  # 3這個element會自動變成文字
d <- c(TRUE, FALSE)
length(a)    # 找出a有多少個element
cbind(b, b)   # 把兩組Vectors用Column合成一個Matrix
        b        b     
[1,] "I"      "I"   
[2,] "am"     "am"   
[3,] "Horace" "Horace"

rbind(b, b)   # 把兩組Vectors用Row合成一個Matrix
  [,1] [,2] [,3]   
b "I"  "am" "Horace"
b "I"  "am" "Horace"


Matrix數學上是兩維的Vectors,在R都是一樣,通常會把一組Vector,用matrix()這個function來建立一個Matrix,透過指名Row和Column的數目(nrow, ncol),和從Row開始數起(byrow=TRUE),還是Column數起(byrow=FALSE)。
v <- c(1,2,3,4)
m <- matrix(v, nrow=2, ncol=2, byrow=TRUE)
m
       [,1] [,2]
[1,]    1    2
[2,]    3    4


Data Frame可算是一個偉大的發明,因為這種Data Type十分像Database裡的Table,對於每一個Column都有一個Variable Name,而每一行Row代表每一個Record,若要像SQL做一些Filter,Join也十分的方便,用起來就像處理一個Table。由於這個Data Type實在太有用,連Python也要開發Pandas這個Package來模彷R的Data Frame。只要利用data.frame()這個function去創建新的Data Frame。
id <- c(1,2,3)
name <- c('Alan', 'Betty', 'Carols')
age <- c(21, 24, 30)
df <- data.frame(id, name, age)     # 宣告一個Data Frame,由3個Vectors組成
names(df) <- c('ID', 'Name', 'Age')    # 為每一個Variable換上自己定義的名字
dim(df)    # 找出df的維度



而R的List是不同於Python的List,它是可以裝上任何多個Object,裡面有一些可以是Vectors,一些可以是Matrix,另外一些可以是Data Frame,基本上就是一串甚麼都可以有的清單。
v <- c(1,2,3,4)
m <- matrix(v, nrow=2, ncol=2, byrow=TRUE)
l <- list(name="Alan", number=3, myVector=v, myMatrix=m)



Factor是用來儲存一些Nominal的變數,便用factor()來讓R知道它不是一組數字,而是已分好類的群組。
success <- c(1, 0, 1, 1, 0, 1, 0)
f <- factor(success)
levels(l)    # 找出有多幾個類別
[1] "0" "1"


當你了解完後R有什麼的Data Type,你便能輕鬆處理一些數據,之後再應用一些統計分析的Function,便能事半功陪。


Comments

Popular posts from this blog

Boosting vs Bagging? 別再胡亂用了!

機器學習之陷阱 - Imbalance Class Classification

Excel VBA - 自動生成分析報告