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

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀學(xué)習(xí)和使用SAS的一點(diǎn)感想
學(xué)習(xí)和使用SAS的一點(diǎn)感想
2015-09-14
收藏

學(xué)習(xí)和使用SAS的一點(diǎn)感想



想說(shuō)一說(shuō)自己在學(xué)習(xí)和使用SAS時(shí)的所得所失。我可能走了許多彎路,尤其是比起那些具備更多的信息的,更加年輕的人。我的經(jīng)驗(yàn)或許比你的要多,也可能更加微不足道。但是分享的本身,即使是微末的一點(diǎn)點(diǎn),也是樂(lè)趣。不是嗎?

一直到現(xiàn)在,我還覺(jué)得自己做SAS還是挺辛苦的,差不多從來(lái)就沒(méi)有很多人那樣的舉重就輕。如果我說(shuō)自己學(xué)了三年的SAS還不成的話,有人會(huì)納悶。納悶SAS不就是幾個(gè)月的速成軟件嗎?對(duì)一些人來(lái)說(shuō),這無(wú)疑是正確的。可是如果承認(rèn)自己的智商并非天賦異秉而高人一等的話,就得潛下心來(lái),不要妄自菲薄。我自己學(xué)了五年SAS,還經(jīng)常犯錯(cuò)。我的同事做的更好,可是也犯錯(cuò)誤。

我所學(xué)專業(yè)是統(tǒng)計(jì),入門(mén)的軟件是R,在工作里差不多只和SAS打交道。用SAS處理數(shù)據(jù)分析數(shù)據(jù)。不多的時(shí)候用R運(yùn)行一下別人的程序,或者是SAS里沒(méi)有成形的較新的方法。一年也設(shè)計(jì)一二或三個(gè)DATABASE(用ACCESS)。我的工作內(nèi)容差不多可以普遍到整個(gè)做統(tǒng)計(jì)分析行業(yè):大致如此。最重要的當(dāng)然是數(shù)據(jù)分析,或者說(shuō)分析數(shù)據(jù)就是自己的日常工作內(nèi)容。幾乎無(wú)時(shí)不刻的用SAS。

因?yàn)槿腴T(mén)晚,大概有五年的時(shí)間,開(kāi)始用的差不多就是SAS V9的版本。所以每當(dāng)看到有些SAS使用者在用proc plot一類的過(guò)程,看到那些星星點(diǎn)點(diǎn)的黑白的制圖,除了肅然起敬之外,也明白了為什么很多人會(huì)討厭SAS的圖形功能。從現(xiàn)在SAS的圖形功能及其和ODS輸出的良好結(jié)合性來(lái)看,sas的制圖是很美觀的。而這種對(duì)SAS舊版本的較為薄弱的制圖形功能的輕視,幾乎成了許多人的共識(shí):不要用sas畫(huà)圖。我很幸運(yùn),過(guò)度了大概兩年時(shí)間的gplot,到了現(xiàn)在的sg-plot。我的工作任務(wù)之一是給“科學(xué)研究”(我總這在想這種提法科學(xué)嗎?)提供數(shù)據(jù)分析報(bào)告,從發(fā)表雜志文章的角度來(lái)看,sas圖例無(wú)論是從清晰度還是審美的角度來(lái)看,都是雜志圖例的首選之一。不象有的人抱怨excel成圖的DPI太低。其實(shí)有時(shí)候R也存在這個(gè)問(wèn)題。

SAS涵蓋比較廣泛。其特定的功用可以延伸到許多不同的行業(yè)。而量身定制的衍生產(chǎn)品也有泛濫的趨勢(shì)。不過(guò),SAS/STAT應(yīng)該仍然是它的核心。相比其實(shí)不太有歷史感的9.0版本,SAS在STAT上的拓展也可以說(shuō)是日新月異。比如說(shuō)在MCMC上,在非參數(shù)估計(jì)上,在隨機(jī)線性模型的補(bǔ)充改善上都是這幾年的事情。且不提更新的分位回歸,結(jié)構(gòu)方程分析(PROC CALIS),以及混合模型等等。原來(lái)覺(jué)得很難做的東西,現(xiàn)在都成為了常規(guī)。幾年以前的統(tǒng)計(jì)博士或許不懂生存分析?,F(xiàn)在差不多本科生都知道怎么繪制生存曲線。如同統(tǒng)計(jì)在運(yùn)算方面的突飛猛進(jìn),SAS也與時(shí)俱進(jìn)。所以引以為自豪的太老的SAS經(jīng)驗(yàn),如果沒(méi)有變成進(jìn)步的阻礙的話,也成了自吹自擂的慰籍。

我在學(xué)了兩年的SAS之后,覺(jué)得SAS其實(shí)也沒(méi)有什么。其實(shí)都是自菲薄。SAS作為一個(gè)軟件,承載的是更加厚重的統(tǒng)計(jì)學(xué)的發(fā)展。我曾經(jīng)和同事談?wù)撨^(guò)PROC GLM。我認(rèn)為GLM基本上取代了REG過(guò)程。可是現(xiàn)在,我不得不把許多線性分析的問(wèn)題從GLM挪到REG里去做,因?yàn)镽EG在許多方面更加有效和全面。比如說(shuō)模型選擇和診斷。類似的如同GENMOD和LOGISTIC的關(guān)系。GENMOD也許可以做的更多,但是無(wú)疑LOGISTIC在logit模型上做的更深更精確。

和許多的軟件一樣,SAS是個(gè)大雜燴,可以提供許多菜單以供顧客選擇??紤]到這一點(diǎn),雜這個(gè)概念非常重要。雜用,其實(shí)是取其精華,不囿于某個(gè)步驟和過(guò)程。我看到一些人試圖用數(shù)據(jù)步或者SQL去解決統(tǒng)計(jì)的問(wèn)題。南轅北轍。事倍功半。因?yàn)镾AS已經(jīng)提供更加縝密的統(tǒng)計(jì)過(guò)程來(lái)計(jì)算統(tǒng)計(jì)量解決統(tǒng)計(jì)問(wèn)題。如果我說(shuō)你在SQL費(fèi)力半天求的中位數(shù)其實(shí)是錯(cuò)誤,可能你生氣??墒鞘鞘聦?shí)。還有一個(gè)例子是關(guān)于使用PROC NLMIXED的問(wèn)題。這是一個(gè)用最大似然法解決非線性模型的統(tǒng)計(jì)過(guò)程。其實(shí),且不提MAXIMUM LIKELIHOOD在許多問(wèn)題上并非是最有效的最優(yōu)化的,盲目的寫(xiě)了很長(zhǎng)的公式,而人為忽略其他的過(guò)程或許已經(jīng)提供更優(yōu)化的解法,并非是表現(xiàn)好的數(shù)學(xué)功底的唯一方法。

作為一個(gè)做數(shù)據(jù)分析的,我切實(shí)的建議是,不要忽略數(shù)據(jù)步的作用。做sas開(kāi)始的很長(zhǎng)一段時(shí)間里,你或許都無(wú)法避免程序疏漏的困擾。這些錯(cuò)誤很大的一部分來(lái)自對(duì)DATA STEP沒(méi)有深刻的理解。我有時(shí)候驚訝自己為什么總犯些很低級(jí)的錯(cuò)誤。其實(shí)這些錯(cuò)誤是有根源的。好的數(shù)據(jù)分析的基礎(chǔ)是真確的數(shù)據(jù)。如果失去了這個(gè)基礎(chǔ),其它的似乎變得沒(méi)有意義。包括我自己,時(shí)常的尷尬是為什么同樣的數(shù)據(jù),分析結(jié)果卻無(wú)法復(fù)制。原因差不多總是源于對(duì)SAS理解的不深不全。

我不希望自己把SAS理解為專于程序編制的軟件。其實(shí)其最終的目的應(yīng)該是進(jìn)行統(tǒng)計(jì)分析,產(chǎn)生分析總結(jié)的報(bào)告。所以編程只是手段而已。data step再難,多做幾遍,多記憶就會(huì)掌握,但是繁復(fù)變化的統(tǒng)計(jì)理論和運(yùn)算,需要不斷的理解和改進(jìn)。所以一個(gè)統(tǒng)計(jì)分析報(bào)告或許也幾易其稿,不斷改善。

和我一樣,你或許也感受到SAS的易和不易。不過(guò),通過(guò)學(xué)習(xí)和使用SAS而獲得對(duì)知識(shí)的興趣,可能使得我們對(duì)自己的看似無(wú)聊的工作減少了許多抱怨。CDA數(shù)據(jù)分析師官網(wǎng)


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

若不方便掃碼,搜微信號(hào):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)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }