99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀選擇R語言做統(tǒng)計(jì)分析的理由
選擇R語言做統(tǒng)計(jì)分析的理由
2016-01-13
收藏

R語言是S語言的一種開源實(shí)現(xiàn),一種用于數(shù)據(jù)分析和圖形化的編程環(huán)境。資深分析師Catherine最近撰文結(jié)合自己的實(shí)踐經(jīng)驗(yàn)詳細(xì)介紹了R語言的優(yōu)點(diǎn)和缺點(diǎn)。

Catherine指出,R主要用于做統(tǒng)計(jì)工作。你可以把它看成是像SAS Analytics分析系統(tǒng)的競爭者之一,R如此強(qiáng)大,諸如StatSoft STATISTICA 或者 Minitab與R相比,就不值一提了。

許多專業(yè)的政府部門、商業(yè)和制藥行業(yè)的統(tǒng)計(jì)人員和方法論者把他們的事業(yè)都傾注在了IBM 的SPSS或者是SAS上,但是他們并不用寫一條R代碼就能用。所以,從某種程度上來說,決定去學(xué)習(xí)R是一個事關(guān)企業(yè)文化和你如何去工作的問題。我在我的統(tǒng)計(jì)咨詢實(shí)踐中使用好幾種工具,但是我所用的大部分都是R。

關(guān)于R語言的優(yōu)點(diǎn),Catherine列舉了若干條:

  • R是一個強(qiáng)大的腳本語言。我最近被邀請去分析一次概略研究的結(jié)果。這些研究者翻閱了1600篇研究論文,并把這些內(nèi)容用幾種標(biāo)準(zhǔn)來編碼——事實(shí)上是大量的標(biāo)準(zhǔn),并且這些標(biāo)準(zhǔn)還包括多個選項(xiàng)和分支。他們的數(shù)據(jù)曾經(jīng)放到微軟的Excel表格中,這表格中居然包括8000列,然后這些列大多是是空的。這些研究者們想要在不同的類別和標(biāo)題下對總數(shù)進(jìn)行壓縮,R是一種強(qiáng)大的腳本語言,它能夠像Perl的正則表達(dá)式一樣來處理文本。凌亂的數(shù)據(jù)需要編程語言這樣的資源,盡管SAS和SPSS有處理那些超越下拉菜單任務(wù)的腳本語言,但是R是被用作一門編程語言來寫的,因此,對于這一目的,R是一種更好工具。
  • R領(lǐng)導(dǎo)新的方式。許多新的統(tǒng)計(jì)學(xué)方面的產(chǎn)品在成為商業(yè)平臺之前,最初是作為R的包而出現(xiàn)的。我最近得到關(guān)于病人回訪的醫(yī)學(xué)研究的數(shù)據(jù)。對于每一個病人,我們有醫(yī)生曾經(jīng)建議的治療條目的數(shù)量,同時也有病人實(shí)際記住的條目數(shù)量。自然模型是β-二項(xiàng)分布。自20世紀(jì)50年代以來,這一點(diǎn)已經(jīng)被廣泛熟知,但是把估計(jì)程序與感興趣的協(xié)變量關(guān)聯(lián)起來卻是最近的事情。通常,像這樣的數(shù)據(jù)都要用一般估計(jì)方程來處理,但GEE方法是漸進(jìn)的,并且假設(shè)前提是樣本足夠大。我曾經(jīng)希望R能夠擁有處理廣義線性模型與β-二項(xiàng)式的能力。恰好最近的一個包估計(jì)了這個模型: Ben Bolker所寫的β-二項(xiàng)式。SPSS都沒有完成這個功能。
  • 與文檔整合在一起發(fā)布。R能夠很好的與LaTex文檔發(fā)布系統(tǒng)整合在一起,這意味著來自于R的統(tǒng)計(jì)輸出和圖形可以嵌入到可出版級的文檔中。這并不是適合每一個人,除非你想寫一本關(guān)于數(shù)據(jù)分析的書,或者你是不喜歡把你的結(jié)果拷貝到一個字符處理文檔中,最短和最優(yōu)雅的途徑是通過R和LaTex來實(shí)現(xiàn)。
  • 沒有花費(fèi)。作為一個小企業(yè)的老板,我很喜歡R是免費(fèi)的這一特點(diǎn)。甚至對于一個大企業(yè),要知道你可以帶一個有臨時基礎(chǔ)的人來,然后快速的讓他們坐到工作站旁來使用領(lǐng)先的分析軟件是一件很美妙的事情。沒必要擔(dān)心預(yù)算問題。

Catherine進(jìn)一步指出,R是在S-Plus開發(fā)的附加模型的基礎(chǔ)上對S的一種實(shí)現(xiàn)。有時候,同樣的人也參與進(jìn)對R的開發(fā)中。R是在GNU許可證下的一個開源項(xiàng)目,在此基礎(chǔ)上,R通過不斷的添加大量的包而持續(xù)增長。R把那些能被當(dāng)做同一組安裝,并且可以被R在會話期訪問的數(shù)據(jù)集合、R函數(shù)、文檔和動態(tài)加載項(xiàng)用C或者Fortran打包到一起。R的包添加新的功能到R,并通過這些軟件包,研究人員可以很容易地分享他們的同齡人之間的計(jì)算方法。某些軟件包是范圍有限的,其他代表統(tǒng)計(jì)學(xué)的整個領(lǐng)域,含有其他一些包含了前沿的發(fā)展。事實(shí)上,許多統(tǒng)計(jì)學(xué)方面的開發(fā)包在變成商業(yè)軟件之前最開始都是以R的包的形式出現(xiàn)的。

對于InfoSphere Streams和R語言的關(guān)系,Catherine表示,InfoSphere Streams的是一種先進(jìn)的計(jì)算平臺,允許用戶開發(fā)的應(yīng)用程序,以快速的采集、分析和關(guān)聯(lián)信息,因?yàn)樗鼤邮盏綌?shù)以千計(jì)的實(shí)時數(shù)據(jù)源,處理非常高的數(shù)據(jù)傳輸率:高達(dá)每秒數(shù)以百萬計(jì)的事件或消息。它包括一個R-項(xiàng)目工具包。

InfoSphere Streams是一個計(jì)算平臺,集成了對數(shù)以千計(jì)的數(shù)據(jù)源高流速的數(shù)據(jù)進(jìn)行分析的開發(fā)環(huán)境。這些數(shù)據(jù)流的內(nèi)容通常是非結(jié)構(gòu)化或半結(jié)構(gòu)化的。分析的目標(biāo)是檢查對那些基于實(shí)時事件的數(shù)據(jù)和直接決策的模式變化。SPL是InfoSphere Streams的編程語言的簡寫,它通過一個反映了數(shù)據(jù)的動態(tài)本質(zhì)和快速分析和響應(yīng)的必要范式來組織數(shù)據(jù)。

我們從經(jīng)典統(tǒng)計(jì)分析的電子表格和通常的平面文件還是有很長的路要走的,但R都能適應(yīng)。至于3.1版,SPL應(yīng)用程序可以將數(shù)據(jù)傳遞到R,從而使用R的豐富的包庫。InfoSphere Streams支持通過創(chuàng)建相似的R對象來接收包含著SPL元組(SPL中基本的數(shù)據(jù)結(jié)構(gòu))中的信息來支持R分析。InfoSphere Streams的數(shù)據(jù)可以傳遞到R作進(jìn)一步的分析并把結(jié)果傳回給SPL。

當(dāng)然,R語言不是完美無缺的,Catherine也列舉了R語言的缺點(diǎn):

  • R不是一個數(shù)據(jù)倉庫。在R輸入數(shù)據(jù)的最簡單的方法是輸入在別處,然后將其導(dǎo)入到R。R已作出努力來添加電子表格的前端,但還沒有做到完美。對電子表格功能的缺乏不僅影響數(shù)據(jù)輸入并且這對在R可視化的查看數(shù)據(jù)也很難,而這些事情,你在SPSS和Excel中都可以完成。
  • R使得普通的任務(wù)在醫(yī)療研究中變得艱難。例如,當(dāng)列出無應(yīng)答和丟失的數(shù)據(jù)的發(fā)生的時候,你處理數(shù)據(jù)的第一步是對所有變量匯總統(tǒng)計(jì)。這在SPSS只需要點(diǎn)擊幾次鼠標(biāo),但R有沒有內(nèi)建的函數(shù)來計(jì)算這個相當(dāng)明顯的信息,并以表格形式顯示出來。你可以很輕松地寫一些東西出來,但有時你只是想用鼠標(biāo)操作即可。
  • R的學(xué)習(xí)曲線是艱難的。一個新手可以打開一個菜單驅(qū)動的統(tǒng)計(jì)平臺,并在幾分鐘內(nèi)得到結(jié)果。并不是每個人都想從一個程序員變成一個分析師,當(dāng)然,也許不是每個人必須這樣。
  • R是開源的。R社區(qū)非常大,成熟,并且活躍度也很高,毫無疑問,R是其中較為成功的開源項(xiàng)目。正如我所展示的那樣,R的實(shí)現(xiàn)花了20年以上的時間,并且S語言比R時間更長。它是一個論證過了的概念和產(chǎn)品。但是,任何開放源碼的產(chǎn)品,它的可靠性依賴于透明度。我們相信代碼,因?yàn)槲覀兛梢詸z查代碼,,并且別人也可以檢查代碼進(jìn)而報(bào)告錯誤。這與那些采取它在自己的基準(zhǔn),并驗(yàn)證其軟件的公司項(xiàng)目是不同的。而對于那些較少被使用的R包,你沒有理由相信它們做出了正確的結(jié)果。 

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }