
SAS與R優(yōu)缺點(diǎn)討論:從工業(yè)界到學(xué)界
盡管在工業(yè)界還是被 SAS 所統(tǒng)治,但是R 在學(xué)術(shù)界卻得到廣泛的應(yīng)用,因?yàn)槠涿赓M(fèi)、開源的屬性使得用戶們可以編寫和分享他們自己的應(yīng)用。我們的目的就是展示這兩種差異巨大的語言各自優(yōu)點(diǎn),并且共同發(fā)揮他們的優(yōu)勢,我們同時(shí)還要指出那些不使用 SAS 好多年的、現(xiàn)在正在使用 R語言的人們的一些誤解和偏見,因?yàn)樗麄円呀?jīng)很少關(guān)注 SAS 的發(fā)展和進(jìn)步了。
前言
我們選取 SAS 和 R 的原因是因?yàn)樗麄兪悄壳霸诮y(tǒng)計(jì)領(lǐng)域中最有統(tǒng)治地位的兩個(gè)編程語言?,F(xiàn)在我們注意到一個(gè)不好的現(xiàn)象,就是在學(xué)術(shù)界重度使用R的用戶認(rèn)為R在被SAS霸占的工業(yè)界有具有相當(dāng)優(yōu)勢的,然而熟練掌握這兩個(gè)軟件對(duì)于想在數(shù)據(jù)分析領(lǐng)域取得小有成就的年輕人來說很關(guān)鍵。
SAS經(jīng)常有一些更新,非SAS程序員由于沒有技術(shù)跟進(jìn)往往并不知情。SAS繪圖模塊就是一個(gè)快速發(fā)展并成長的例子,然而許多人并不注意到這些升級(jí)以至于他們?nèi)匀还虉?zhí)的使用 R畫圖。SAS另一個(gè)不廣為人知的例子是SAS可以輕松自定義函數(shù),這正是 R 的強(qiáng)項(xiàng)。這個(gè)SAS過程步(PROC)有全面的語法檢查、翔實(shí)的文檔和技術(shù)支持;然而一個(gè)新的使用者很可能不知道這些工具可用,或者根本不知道它們的存在。另外,SAS 還擁有卓越的培訓(xùn)課程,網(wǎng)絡(luò)及用戶組分享資源,不同相關(guān)主題的大量書籍。知道并合理的使用這些技術(shù)以及工具有助于減少使用 SAS的畏懼之心。
統(tǒng)計(jì)方法的新進(jìn)展
SAS:
優(yōu)點(diǎn):SAS 的軟件及算法都是經(jīng)過檢驗(yàn)的,SAS 有技術(shù)支持去快速解決用戶的需求。如果需要的話,SAS 會(huì)嘗試在已存在的步驟中嵌入新的方法,例如增加一個(gè)選項(xiàng)或者新增一個(gè)語句(statement),因此用戶不需要學(xué)習(xí)另外一個(gè)過程步。SAS也會(huì)發(fā)布最新通訊來詳細(xì)說明軟件的更新。
缺點(diǎn):更新升級(jí)較慢。
R:
優(yōu)點(diǎn):用戶可以快速實(shí)施新方法,或者尋找已經(jīng)存在的軟件包。很容易學(xué)習(xí)和理解新方法,因?yàn)閷W(xué)生們可以看到代碼中的函數(shù)。
缺點(diǎn):R 文檔的更新都是通過用戶進(jìn)行的,所以新的方法并沒有被很好調(diào)試和檢驗(yàn)。開發(fā)者們散布于各地,而并沒有在一起來進(jìn)行團(tuán)隊(duì)合作的開發(fā)。
在這個(gè)問題上,SAS 和 R 的優(yōu)缺點(diǎn)是互補(bǔ)的。對(duì)于 R,有人認(rèn)為它的代碼是開放的,可以看到 R 是如何工作的,這對(duì)于擁有相關(guān)背景的人是比較容易理解的。然而對(duì)于 SAS,它的過程步是預(yù)裝的,文件中對(duì)不同的語句(Statement)及選項(xiàng)( Option) 存儲(chǔ)了大量的數(shù)學(xué)公式。如果用戶真的想看到底層程序,這個(gè)也是很容易實(shí)現(xiàn)的。對(duì)兩種語言的使用著者來說,不管是學(xué)生還是其它用戶,只是運(yùn)行代碼的話對(duì)于兩種語言是沒有什么不同的。你運(yùn)行SAS,不需要知道它在干什么,類似的是,你運(yùn)行R時(shí),也不需要知道它在后臺(tái)調(diào)用的函數(shù)。你所做的就是按章操作而已。
畫圖
SAS:
優(yōu)點(diǎn):SAS畫圖模塊正變得越來越靈活、精良和易于使用。在一些分析過程步(PROCs) 中,ODS Graphics可以自動(dòng)的生成一些圖形,而不需要額外的代碼。這使得用戶多了一個(gè)選擇,即可以使用默認(rèn)的圖表生成圖表,也可以自己來創(chuàng)造個(gè)性化的圖表。
缺點(diǎn):圖形背后的模板語言(TL)是龐大及不易使用的,特別是對(duì)于新手來說。新的高級(jí)功能如交互式繪圖功能( interactive graphs),對(duì)于新手來說也是難以掌握的。
R:
優(yōu)點(diǎn):可以簡單的生成漂亮的圖表,還可以使用循環(huán)語句來生成動(dòng)畫。
缺點(diǎn):在 R 中圖表功能與統(tǒng)計(jì)分析無關(guān),繪圖和分析是相互獨(dú)立的。用戶必須自己來決定什么樣的圖形是合適的,使用效果的好壞取決于用戶們的統(tǒng)計(jì)背景和喜好。盡管改變圖形去達(dá)到特別的維度或角度并不是一個(gè)簡單事兒。
SAS9.2 之前版本的圖表功能不足是 R 更吸引人的一個(gè)主要原因之一。R的一個(gè)最好的特性之一就是其圖表功能的高質(zhì)量性和易用性。但是,當(dāng)前 SAS/GRAPH 搭配 ODS Graphics 及 SG 過程在軟件中增加了制圖的能力。聯(lián)合使用 ODS graphics 和 PROCS 可以使用戶簡單地生成與分析相關(guān)的展示圖表。特定的繪圖過程步如PROC SGPLOT,SGPANEL和SGSCATTER等越來越多,當(dāng)然需要的一定代碼來實(shí)現(xiàn)。另外,SAS 中還有一些其他不錯(cuò)的繪圖選擇,如 SGDESOGNER 和 SAS Enterprise Guide。
函數(shù)及可重復(fù)使用的代碼
SAS:
優(yōu)點(diǎn):SAS有可在 DATA 和 PROC 步使用的大量函數(shù)和自定義函數(shù)。另外強(qiáng)大無所不能的、也可以被DATA步和PROC步使用的宏語言。宏變量可定義為局部或者全局類型。
缺點(diǎn):編寫自定義函數(shù)和詳細(xì)的宏代碼需要深厚的編程知識(shí)來確保正確性。
R:
優(yōu)點(diǎn):在 R 中編寫函數(shù)很簡單,用戶也可以通過上傳自己的函數(shù)到 R-CRAN 上與其它用戶分享。
缺點(diǎn):編寫自定義函數(shù)需要深厚的編程知識(shí)來確保正確性。變量是嚴(yán)格的局部變量。在這一點(diǎn)上兩種軟件擁有類似的利弊。SAS 的早期用戶運(yùn)行自己的定制函數(shù)主要取決于宏程序的編寫,這也是 R 用戶認(rèn)為其低效及笨重的原因。然而,SAS 9 版本的 PROC FCMP允許用戶編寫個(gè)性化的函數(shù),SAS 9.2 版本又允許用戶在 DATA 及 PROC 步中調(diào)用這些函數(shù)。這對(duì)于簡單的統(tǒng)計(jì)函數(shù)是很有用的,對(duì)于更加復(fù)雜的統(tǒng)計(jì)函數(shù)也可以通過 IML 語言來實(shí)現(xiàn)。
SAS 及 R 兩種語言都面臨著怎樣有效地、正確的使用函數(shù),這就需要用戶在函數(shù)編寫的過程中擁有深厚的編程背景。從好的角度來說,一個(gè)程序員需要知道他們編寫的是什么;危險(xiǎn)的是,其它人可以下載一個(gè) SAS 宏或者 P 程序包來使用,盡管他們不知道其內(nèi)在工作原理,甚至不知道其正確性。所以,有了對(duì)宏及函數(shù)適當(dāng)?shù)牧私?,再來分享它們并?yīng)用于具體的需求是很方便的。
用戶支持
SAS:
優(yōu)點(diǎn):SAS 有豐富的網(wǎng)上參考資料,專業(yè)的技術(shù)支持,專業(yè)的培訓(xùn)課程,許多優(yōu)秀的出版書籍,一個(gè)緊密的用戶組及網(wǎng)絡(luò)社區(qū)。SAS 的問題可以直接反映給技術(shù)支持部門,他們會(huì)與用戶一起來解決。
R:
優(yōu)點(diǎn):R 有很好的示例手冊,網(wǎng)上參考材料,R 郵件列表和 R 聚會(huì)。
缺點(diǎn):用戶們?nèi)Q于其它用戶對(duì)于軟件的看法及建議。因?yàn)?R 的開發(fā)者散布于全球各地,所以全球的用戶是缺乏聯(lián)系的。程序包(Package)并不是由 R 軟件的開發(fā)核心團(tuán)隊(duì)來編寫的,所以導(dǎo)致了程序的不完善甚至有時(shí)候會(huì)對(duì)結(jié)果的正確性有所懷疑。另外,很難去直接尋找一個(gè)針對(duì)具體問題的人員或者團(tuán)隊(duì)。
數(shù)據(jù)處理
SAS:
優(yōu)點(diǎn):SAS 可以處理任意類型和格式的數(shù)據(jù)。DATA 步的設(shè)計(jì)純粹就是為了數(shù)據(jù)的管理,所以 SAS 擅長處理數(shù)據(jù)。利用豐富的選項(xiàng),SAS 可以將大數(shù)據(jù)處理的很好,拼表以及 PROC SQL 也可以減少運(yùn)行時(shí)間。
缺點(diǎn):在 DATA 步驟中 SAS 中的DATA步有非明示的循環(huán)算法,因此使用者的編程思維需要改變以符合SAS的運(yùn)行邏輯。
R:
優(yōu)點(diǎn):R 在最初就被認(rèn)為是更加適合大數(shù)據(jù)的。它對(duì)于矩陣的操作和排序的設(shè)計(jì)是非常高效的。R 也可以很好的進(jìn)行各種基于分析的數(shù)據(jù)模擬。
缺點(diǎn):R 的設(shè)計(jì)更加關(guān)注統(tǒng)計(jì)計(jì)算以及畫圖功能,所以數(shù)據(jù)的管理是比較耗時(shí)的,而且不如在 SAS 中那么明晰。其中一個(gè)主要的原因就是:對(duì)于各種不同類型的數(shù)據(jù),在 R 中進(jìn)行很好的數(shù)據(jù)處理是比較難以掌握的。
數(shù)據(jù)處理的重要性經(jīng)常在統(tǒng)計(jì)編程中被忽視了,但是它確實(shí)是非常關(guān)鍵的,因?yàn)閷?shí)際的數(shù)據(jù)非常糟糕,不能直接應(yīng)用于分析。純粹地使用 R 的學(xué)生們對(duì)于得到的數(shù)據(jù)往往有不切實(shí)際的期望,而學(xué)習(xí) SAS 是一個(gè)有效的方法去解決怎樣整理原始的數(shù)據(jù)。SAS可以對(duì)大而繁雜的數(shù)據(jù)集進(jìn)行管理和分析,而 R更著重于進(jìn)行分析。
當(dāng)處理復(fù)雜數(shù)據(jù)時(shí),R 的面向?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)會(huì)遇到很多問題,并且R還缺乏一個(gè)內(nèi)在的循環(huán)過程。在SAS中,應(yīng)用標(biāo)準(zhǔn)化工具經(jīng)常會(huì)進(jìn)行如下操作:合并含有大量缺失數(shù)據(jù)的復(fù)雜數(shù)據(jù)集,再生成及修改其中的變量。而在R中,進(jìn)行復(fù)雜的數(shù)據(jù)處理操作是沒有標(biāo)準(zhǔn)化的,而且經(jīng)常會(huì)導(dǎo)致更加復(fù)雜的過程。
SAS與R軟件運(yùn)行時(shí)間的快慢對(duì)比取決于任務(wù)。如SAS可以通過設(shè)置 MEMLIB,從而像R一樣使用內(nèi)存(而非硬盤)來提升運(yùn)行速度。但在R中,沒有這樣的硬件驅(qū)動(dòng),只能使用內(nèi)存來執(zhí)行。
報(bào)表
SAS:
優(yōu)點(diǎn):SAS 通過很多有用的過程步來生成詳細(xì)漂亮的報(bào)表。
缺點(diǎn):能提供更詳盡報(bào)表的過程如 TABULATE、REPORT 等,在能正確而有效的使用前,將為有一個(gè)艱難的學(xué)習(xí)曲線等待你跨越。
R:
優(yōu)點(diǎn):報(bào)表方面,R擁有諸多利器。Sweave包可以創(chuàng)造包含文字、表格和圖形的 PDF 文件,其中圖形可以LaTeX 和 R 命令來裝扮。另一個(gè)新的程序包 Knitr 可以快速生成格式限制較少的網(wǎng)頁內(nèi)容。
缺點(diǎn):R 沒有一個(gè)模式化的方式來生成報(bào)表,所以需要在編程上花一些功夫。報(bào)表的生成對(duì)于 R 來說是一個(gè)比較新的方向,所以它不如 SAS 來的簡單和快速。在 R 中,Sweave 和 Knitr 是報(bào)表這方面的領(lǐng)先的程序包,但是學(xué)習(xí)起來也比較困難。
重度報(bào)表使用用戶應(yīng)該了解這些以上不同,盡管學(xué)習(xí) SAS 的報(bào)表功能需要花費(fèi)一些時(shí)間,但是一旦掌握了就很有價(jià)值并有很高的靈活性。而從最基礎(chǔ)學(xué)習(xí) R 的報(bào)表功能也許不需要像 SAS 那樣花那么多時(shí)間。
結(jié)論
我們可以看到解決 R 與 SAS 的辯論是三合一的。第一,就像在任何一個(gè)統(tǒng)計(jì)編程社區(qū)一樣,我們知道這個(gè)PK是沒有一個(gè)最終贏家。兩種軟件各有優(yōu)缺點(diǎn)。他們有共存的必要,而學(xué)術(shù)上的教學(xué)中,他們也有共存的必要。如果學(xué)生們能夠明確他們的需求并合理的應(yīng)用,那樣會(huì)獲得更好的效果。如果只給學(xué)生教授一種軟件是有局限性的,這樣會(huì)使他們難以發(fā)揮學(xué)習(xí)另外一種軟件的潛力。第二,用戶們需要保持他們的工具箱與時(shí)俱進(jìn)。SAS 和 R 都有一些很不錯(cuò)的學(xué)習(xí)網(wǎng)站去介紹最新的技術(shù)上的進(jìn)步。第三,最理想的是學(xué)習(xí)兩種軟件并將其融合于分析中。對(duì)于 R 的用戶們,通過轉(zhuǎn)化 R 到SAS 的用戶界面,可以同時(shí)使用 2 種軟件。通過使用兩種軟件可以使處理及分析數(shù)據(jù)變得事半功倍,而且使所有的用戶都滿意。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03