1、統 計 程 式 語 言,What is R?,History and benefit,What is R?,R was initially written by Ross Ihaka and Robert Gentleman.Ross Ihaka http:/www.stat.auckland.ac.nz/ihaka/Robert Gentleman http:/gentleman-lab.fhcrc.org/lab-members/rgentleman/R Ihaka, R Gentleman (1996) R: A Language for Data Analysis and Graphi
2、cs. JOURNAL OF COMPUTATIONAL AND GRAPHICAL STATISTICS. V5(3) 299-314. http:/biostat.mc.vanderbilt.edu/twiki/pub/Main/JeffreyHorner/JCGSR.pdf Ross Ihaka Robert Gentleman,What is R?,Another version of SDeveloped at AT&T Bell Lab by R. Becker, J. Chambers, and A. WilksOpen source and flexible: Windows,
3、 Unix, Linix, MacOSR is free: downloaded from the Comprehensive R Archive Network (CRAN)Supports and extension of R update everyday.Any leading statistical models and analysis can be found in R (with package)More flexible in programming and analysis.Could be connected with C, Matlab, WinBugs,Many us
4、ers around the world. 27 countries and 66 mirror sites.,http:/www.r-project.org/useR-2006/Slides/Chambers.pdf,Why R? 引自台灣資料科學愛好者年會,面對龐大與多元的資料浪潮,資料科學世代已經興起,近年來國外企業應用 R 語言進行資料分析已經相當成熟,包含 Google、Facebook、Agoda、Intel、Pfizer、Bank of America 等企業,都採用 R 語言進行資料分析。國際知名的 KDnuggets 論壇最新統計,R 語言已經連續三年獲得資料科學家採用資料分
5、析語言第一名的殊榮。,5/43,Why R? 引自台灣資料科學愛好者年會,在眾多的資料分析工具中,R語言在統計分析上最為知名,除了具備物件導向的開發環境、擁有強大的資料視覺化能力、更有支援跨平台與免費等優勢,R 語言專注在資料分析上的特性,使它已經成為目前資料分析和繪圖的主流軟體之一。,6/43,Why R ?,R 語言已是全球廣泛度排名第九的程式語言了! -引自台灣資料科學愛好者年會根據 IEEE Spectrum 的統計,R 語言排行第九,在前面的八名為 Java, C, C+, Python, C#, PHP, Javascript, and Ruby,皆為泛用語言或與網頁開發相關的程式
6、語言。以此來看,R 語言是專用於處理資料的程式語言中最流行的。http:/www.r- 全球程式語言排名,TIOBE 是全球公認客觀的程式語言排名統計單位。一個月更新一次。它的統計方法是基於全球有經驗的工程師,科目和第三方廠商。同時也參考來自 google, msn, yahoo 等搜索引擎計算得出的結果 。http:/ R Click on CRAN,Web page: http:/www.r-project.org/index.html,1.Click on CRAN,Installing R Select a mirror site,Installing R Select a mirro
7、r site,Installing R Select OS in CRAN,Installing R Select Binaries,Installing R Download Setup file,Installing R Download Setup file,Installing R Download Setup file,Installing R Download Setup file,Installing R Download Setup file,Unclick Message Translations to get R in English mode.,Installing R
8、Download Setup file,1,2,3,4,Using R,Double click on the R icon,R主要指令執行視窗,Interactive Command Window可在此視窗做程式編纂,按Enter執行,R程式編纂與執行【程式存檔 =*.R】,改變工作目錄 【getwd() setwd(dir)】,Help Manuals,求助 【help(“topic”)】,help(“xxx”) / ?”xxx”:已知指令,欲查詢指令內容或輸入方式,求助範例,使用方法,input,output,求助 【help.search(“指令名稱或關鍵字”) / ?”xxx”】,O
9、utput會列出指令名稱或指令說明中包含此關鍵字(mean)的所有指令,package,function,套件(packages),自動載入之套件,stats: 常用統計分析(t.test, anova, etc.)graphics: 基本繪圖工具grDevices:基本繪圖介面utils: 基本程式編寫工具datasets: 據範methods: 定義classes of objectsbase: 基本函式(IO, 敘述統計, etc.),安裝套件 【以package:leaps為例】,載入套件【方法一】,載入套件【方法二】,套件查詢,Currently, the CRAN package
10、repository features 5816 available packages. Package 查詢:http:/cran.r-project.org/web/packages/Package “leaps”: http:/cran.r-project.org/web/packages/leaps/index.html,套件查詢,變數命名及語法,例子:定義一個新的變數叫temp,並且指定其值為24紅字是輸入,藍字是輸出大小寫代表不同物件等號可用箭頭(-)代替變數名稱必須為字母或是點(.)開頭變數名稱由字母、數字、點(.)或下底線( _ )組成,不能含有特殊符號,如:!。正確的命名:x
11、5; x_5; x.5; .x5; x.y.z.5 錯誤的命名:x-5; 5x; x$5 c, q, t, C, D, F, I, T; diff, df, pt, pi, 不可以是物件名稱,語法,程式以分號(;)或是換行做分隔。註解:R不執行#後之內容,故常將程式註解置於#之後。Recall : 上下鍵。基本運算:可以直接輸入數值計算。若物件屬性與維度相同,可以進行四則運算。若不能計算,會回傳NaN (not a number),如:log(-1)。,35/43,R as a calculator,可以直接輸入數值計算若物件屬性與維度相同,可以進行四則運算常用的數學函數,如log, exp,
12、 sin,.可直接計算若不能計算,會回傳NaN (not a number),36,查詢、移除已定義物件,ls()rm(“A”)rm(list=ls(),37,Environment commands ls() rm(),紅色字代表輸入的指令、藍色字代表輸出的結果。R的註解符號為#,當程式遇到#,後面的文字將不會執行,查詢已定義物件:尚無物件,查詢已存在的package:共九個package,定義新物件(定義新變數為Temp01,並指定其值為9):大小寫代表不同變數,查詢已定義物件:兩個物件temp01 & Temp01,移除已定義物件:移除temp01,Practice,請用R計算請用R計算
13、請比較log(10); log2(10); log10(10),39,Hint: 可用x!=gamma(x+1)或是x!=prod(1:x),輸入向量,40,c(),可以是數值,可以是字串,還可以把每一個元素取名字,Practice,Weight: 50, 62, 47, 48, 72, 81, 45, 58, 65, 55Height: 1.58, 1.77, 1.43, 1.52, 1.84, 1.72, 1.45, 1.62, 1.70, 1.55請計算每個人的BMI及平均BMI,41,將物件存檔,save.image(C:Usersuser1Desktop統計軟體temp.RData)
14、,42,Input a sequence,用“:”表示從1到10等距的數列可以用seq (sequence)重複生成相同的數/數列,用rep (replication),43,Practice: 如何生出0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95 1.00這個數列?Q:如何生出 10 9 8 7 6 5 4 3 2 1 呢?,輸入矩陣,44,直接輸入矩陣的元素,再指定其維度,利用matrix這個function。1:12為矩陣內元素nrow
15、=number of rowNote: ncol=number of column,矩陣運算,維度相同才能加減x*y: x,y相同位置的元素直接相乘x%*%t(y): 需維度符合才可相乘/除t(y): transpose of y,45,其他相關函數,cbind/rbindsolve(A)rownames/colnamesis.matrix/as.matrix, is.numeric/as.numeric, colSums/rowSums, colMeans/rowMeanseigen(x),46,Operations,Practice,輸入矩陣計算計算,48,Operations - 定義變數,Operations,Operations,