常用函數(shù)PT課件_第1頁
常用函數(shù)PT課件_第2頁
常用函數(shù)PT課件_第3頁
常用函數(shù)PT課件_第4頁
常用函數(shù)PT課件_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

清華大學(xué)經(jīng)濟(jì)管理學(xué)院朱世武zhushw@zhushw@

ZhuShiwuSchoolofEconomicsandManagement,TsinghuaUniversity

第6章常用函數(shù)1.本章內(nèi)容提要SAS函數(shù)定義;SAS函數(shù)自變量與結(jié)果;SAS函數(shù)分類;日期時(shí)間函數(shù);常用概率分布函數(shù);分位數(shù)函數(shù);樣本統(tǒng)計(jì)函數(shù);隨機(jī)數(shù)函數(shù);SASCall子程序。2.SAS函數(shù)定義

SAS函數(shù)是一個(gè)子程序,對自變量返回一個(gè)結(jié)果值。SAS函數(shù)的形式:函數(shù)名(X1,X2,…)3.函數(shù)用于組合表達(dá)式可以簡化編程和統(tǒng)計(jì)計(jì)算例6.1表達(dá)式中用函數(shù)。dataa(keep=dateydmin);/*保留date,y,d,min四個(gè)變量*/setResDat.idx000001;y=year(date);/*函數(shù)year給出變量date年份*/d=weekday(date);/*函數(shù)weekday給出變量date在一周內(nèi)的哪一天*/min=min(sum(oppr,hipr,lopr,clpr),1000);run;例6.2條件語句中使用函數(shù)。dataa;setResDat.idx000001;whereyear(date)>1996;/*Where語句中使用Year函數(shù)*/run;4.用函數(shù)處理多變量可以簡化程序例6.3用與不用SAS函數(shù)時(shí)的程序。不用SAS函數(shù)。totx=xl+x2+x3+x4+x5+x6+x7+x8+x9+x10;iftotx<ythenleast=totx;elseleast=y;使用SAS函數(shù)。least=min(sum(ofx1-x10),y);例中,兩段程序的結(jié)果相同,第二段只有一個(gè)語句,非常簡單。5.函數(shù)自變量自變量類型:變量名;常數(shù);函數(shù);表達(dá)式。例6.4函數(shù)及其自變量類型舉例。

函數(shù)舉例自變量類型Max(X,Y);變量名X,YX=Repeat(‘---‘,20);常數(shù)Least=Min(sum(ofx1-x10),y);變量名和函數(shù)Num=sum((ifx1>0),(ifx2>0))表達(dá)式6.自變量個(gè)數(shù):有些函數(shù)不需要自變量,有些只需要一個(gè)自變量,有些函數(shù)有多個(gè)自變量。SAS9.1中,自變量個(gè)數(shù)不能超過32767。如果函數(shù)的自變量是表達(dá)式,在函數(shù)被調(diào)用之前,所有表達(dá)式自變量首先計(jì)算。自變量表示法:當(dāng)函數(shù)有多個(gè)自變量時(shí),必須用逗號(hào)分隔開。自變量名縮寫方法:函數(shù)名(OF變量名1…變量名n)

7.例6.5正確與錯(cuò)誤的表示方法。例6.6數(shù)組元素自變量的縮寫方法。arrayy{10}y1-y10;/*定義數(shù)組y{10}*/x=sum(ofy{*});z=sum(ofy1-y10);例中,兩個(gè)SUM函數(shù)的表示法是等價(jià)的。

8.函數(shù)結(jié)果通常函數(shù)的結(jié)果由其自變量的屬性決定:自變量是字符時(shí)結(jié)果變量為字符;自變量是數(shù)值時(shí)結(jié)果變量為數(shù)值。PUT函數(shù)是一個(gè)例外,它不管自變量是什么類型,其結(jié)果總是字符值。根據(jù)缺省規(guī)則,對大多數(shù)函數(shù)來說,數(shù)值目標(biāo)變量的長度是8,字符目標(biāo)變量的長度沒有缺省規(guī)則。目標(biāo)變量長度不用缺省規(guī)則的函數(shù)見課本表6.1。9.用PUT語句在LOG窗口顯示函數(shù)值例6.7顯示概率值和分位數(shù)。data;Y=probnorm(1.96);/*標(biāo)準(zhǔn)正態(tài)分布小于1.96的概率*/putY;q1=tinv(.95,2);/*自由度為2的t分布的0.95分位數(shù)*/q2=tinv(.95,2,3);/*自由為2,非中心參數(shù)為3的t分布的0.95分位數(shù)*/putq1=q2=;run;0.9750021049q1=2.9199855804q2=13.89437607110.日期時(shí)間函數(shù)SAS日期和時(shí)間存貯標(biāo)準(zhǔn)是以1960年1月1日0時(shí)0分0秒為起點(diǎn),然后以相應(yīng)的間隔記時(shí)。如1960年1月1日9時(shí)0分,按日記的數(shù)值就是0,按小時(shí)記的數(shù)值就是9。1960年1月2日0時(shí)0分,按日記的數(shù)值就是1,按小時(shí)記就是24等。由于日期函數(shù)是一類非常重要的函數(shù),特別是對金融數(shù)據(jù)處理和金融計(jì)算,借助日期函數(shù)可以極大提高效率。11.應(yīng)用舉例例6.8計(jì)算兩個(gè)日期之間的天數(shù)。data

_null_;sdate='01jan2002'd;edate='01jan2003'd;actual=datdif(sdate,edate,'act/act');/*按每個(gè)月的實(shí)際天數(shù)算*/days360=datdif(sdate,edate,'30/360');/*按每個(gè)月30天計(jì)算*/putactual=days360=;run;data

_null_;actual=datdif('01jan2002'd,'01jan2003'd,'act/act');days360=datdif('01jan2002'd,'01jan2003'd,'30/360');putactual=days360=;run;例中,兩段程序的結(jié)果一樣。actual=365,days360=360.12.

例6.9計(jì)算兩個(gè)日期之間的年數(shù)。data

_null_;

sdate='16oct1998'd;

edate='16feb2003'd;

y30360=yrdif(sdate,edate,'30/360');/*30/360規(guī)定求年數(shù)的標(biāo)準(zhǔn)*/

yactact=yrdif(sdate,edate,'ACT/ACT');

yact360=yrdif(sdate,edate,'ACT/360');

yact365=yrdif(sdate,edate,'ACT/365');

puty30360=yactact=yact360=yact365=;

run;y30360=4.3333333333yactact=4.3369863014yact360=4.4yact365=4.3397260274結(jié)果顯示:13.例6.10以日為單位計(jì)算當(dāng)前日期的天數(shù)。data;x=date();y=today();putx=y=;run;例中,DATE()和TODAY()結(jié)果一樣,都是返回當(dāng)天的天數(shù)。當(dāng)然,也可以用一定的日期格式表示它們。data;x=date();y=today();formatxyyymmdd10.;putx=y=;run;結(jié)果顯示:x=17232y=17232結(jié)果顯示:x=2007-03-07y=2007-03-0714.例6.11以秒為單位計(jì)算當(dāng)前的日期和時(shí)間。data;n=datetime();putn=;x=datetime();putx=;formatxdatetime20.4;/*datetime20.4為日期時(shí)間變量輸出格式*/y=datetime();puty=;formatynldatm20.;/*nldatm20.為日期時(shí)間變量輸出格式*/m=time();putm=;z=time();putz=;formatzhhmm8.2;run;15.例6.12計(jì)算日期值所在的年季月以及處于某月的第幾天。dataa;setResDat.stk000001(obs=10);keepdateyearqtrmonthday;year=year(date);qtr=qtr(date);month=month(date);day=day(date);proc

print

noobs;run;

Dateyearqtrmonthday1991-01-0219911121991-01-0319911131991-01-0419911141991-01-0519911151991-01-0719911171991-01-0819911181991-01-0919911191991-01-10199111101991-01-11199111111991-01-121991111216.例6.14將日期時(shí)間值換算為以秒計(jì)數(shù)的計(jì)算方法。data;mdy=mdy(08,18,2001);putmdy=;formatmdyyymmdd10.;hms=hms(21,50,51);puthms=;x=21*60*60+50*60+51;putx=;dhms=dhms(date(),21,50,51);putdhms=;dhms=dhms(15263,21,50,51);putdhms=;y=15263*24*3600+x;puty=;run;結(jié)果顯示:mdy=2001-08-18hms=78651x=78651dhms=1347832251dhms=1318801851y=131880185117.概率分布函數(shù)18.標(biāo)準(zhǔn)正態(tài)分布PROBNORM(X)計(jì)算標(biāo)準(zhǔn)正態(tài)分布隨機(jī)變量小于X的概率。例6.15計(jì)算三個(gè)特殊的正態(tài)概率值。data;P1=probnorm(0);P2=probnorm(1.96);P3=probnorm(2.5758293);putP1=P2=P3=;run;結(jié)果顯示:P1=0.5P2=0.9750021049P3=0.994999999919.樣本統(tǒng)計(jì)函數(shù)樣本統(tǒng)計(jì)函數(shù)在實(shí)際中的用處不是很大,因?yàn)閼?yīng)用這些函數(shù)時(shí),一定要把樣本的觀測數(shù)據(jù)放在同一行才可以,現(xiàn)實(shí)中樣本的觀測數(shù)據(jù)卻往往是按一列一列排的。一般情況下,求變量X的樣本統(tǒng)計(jì)函數(shù)值時(shí)要用別的方法。樣本統(tǒng)計(jì)量函數(shù)共有15個(gè)。

20.均值MEAN(ofxl-xn)或MEAN(x,y,z,…)計(jì)算非缺失自變量的算術(shù)平均。自變量中至少有一個(gè)非缺失值。

21.求和SUM(ofxl-xn)或SUM(x1,x2,…)計(jì)算自變量的和。要求有兩個(gè)以上自變量。

22.方差VAR(ofxl-xn)或VAR(x1,x2,…)計(jì)算自變量中非缺失值的方差。要求至少有兩個(gè)自變量。

23.隨機(jī)數(shù)函數(shù)SAS系統(tǒng)提供11種隨機(jī)數(shù)函數(shù)。由于隨機(jī)數(shù)函數(shù)是進(jìn)行隨機(jī)模擬的基礎(chǔ),這里我們通過例子,給出每種隨機(jī)數(shù)發(fā)生程序,供讀者參考。24.正態(tài)分布例6.27用函數(shù)RANNOR產(chǎn)生正態(tài)分布隨機(jī)數(shù)。dataRV;retain_seed_0;/*retain賦初值0給_seed_*/mu=0;sigma=1;do_i_=1

to

1000;Normal1=mu+sigma*rannor(_seed_);/*均值為mu,標(biāo)準(zhǔn)差為sigma*/output;end;drop_seed__i_musigma;run;Normal1-0.9721-0.70001-2.34007-0.10939-0.01883-0.641540.8187660.221107……例6.28用函數(shù)NORMAL產(chǎn)生正態(tài)分布隨機(jī)數(shù)。dataRV;retain_seed_0;mu=0;sigma=1;do_i_=1

to

1000;normal1=0+1*normal(_seed_);/*均值為mu,標(biāo)準(zhǔn)差為sigma*/output;end;drop_seed__i_;run;26.均勻分布例6.29用函數(shù)RANUNI產(chǎn)生均勻分布隨機(jī)數(shù)。dataRV1;

retain_seed_0;a=-1;b=2;

do_i_=1

to

1000;uniform1=a+(b-a)*ranuni(_seed_);/*區(qū)間[a,b]上的均勻分布*/output;end;drop_seed__i_;run;27.例6.30用函數(shù)UNIFORM產(chǎn)生均勻分布隨機(jī)數(shù)。dataRV1;

retain_seed_0;a=-1;b=2;

do_i_=1

to

1000;uniform1=a+(b-a)*uniform(_seed_);/*區(qū)間[a,b]上的均勻分布*/output;

end;

drop_seed__i_;run;28.隨機(jī)數(shù)函數(shù)自變量SEED隨機(jī)數(shù)函數(shù)使用一個(gè)自變量SEED來選擇產(chǎn)生隨機(jī)數(shù)的初始種子值,由這個(gè)值開始產(chǎn)生隨機(jī)數(shù)流。自變量SEED的取值和初始化類型如下表列出。

表6.4SEED取值與初始化類型

產(chǎn)生隨機(jī)數(shù)的過程中,自變量SEED的值保持不變,種子則不斷變化。所以,用隨機(jī)函數(shù)產(chǎn)生隨機(jī)數(shù)時(shí),不能控制種子的值,因此也不可能控制初始化之后的隨機(jī)數(shù)。如果要控制隨機(jī)數(shù)流,就要用隨機(jī)數(shù)函數(shù)的CALL子程序。

29.SASCALL子程序SAS系統(tǒng)提供一系列CALL子程序,用于產(chǎn)生隨機(jī)數(shù)或執(zhí)行其它的系統(tǒng)功能,詳見表6.5,6.6。

30.隨機(jī)數(shù)子程序用隨機(jī)數(shù)子程序可以更好地控制種子流和隨機(jī)數(shù)流。除NORMAL和UNIFORM這兩個(gè)函數(shù)之外,所有隨機(jī)數(shù)函數(shù)都有一個(gè)相應(yīng)的子程序。CALL語句激活隨機(jī)數(shù)子程序的格式為:CALL

routine(seed,<argument,>variate);選項(xiàng)說明:

使用CALL子程序時(shí),首先要對SEED變量賦初值。同時(shí)產(chǎn)生幾個(gè)隨機(jī)數(shù)流時(shí),用CALL子程序比用隨機(jī)函數(shù)的效果更好。因?yàn)?,用隨機(jī)數(shù)函數(shù)同時(shí)創(chuàng)建的多個(gè)隨機(jī)數(shù)變量都屬于同一個(gè)隨機(jī)數(shù)流。

31.例6.38使用隨機(jī)函數(shù)產(chǎn)生兩個(gè)隨機(jī)數(shù)變量屬于同一個(gè)隨機(jī)數(shù)流。dataRV;retainseed1seed2161321804;doI=1

to

5;x1=ranuni(seed1);x2=ranuni(seed2);output;end;optionsnocenter;proc

print;run;例中,SEED1和SEED2的初值相同,但X1和X2的第一個(gè)觀測值卻不相同。因?yàn)?,SEED2的值在這里不起作用,X2的第一個(gè)值并不是由SEED2產(chǎn)生的,而是產(chǎn)生第一個(gè)X1后一個(gè)新種子的結(jié)果。所以,這里產(chǎn)生的兩個(gè)隨機(jī)數(shù)變量屬于同一個(gè)隨機(jī)數(shù)流。

結(jié)果顯示:Obsseed1seed2Ix1x2116132180416132180410.436170.64888216132180416132180420.341380.427293

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論