国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
R語(yǔ)言入門(mén)第十講:使用函數(shù)sample進(jìn)行抽樣

R語(yǔ)言入門(mén)第十講:使用函數(shù)sample進(jìn)行抽樣

負(fù)基礎(chǔ)學(xué)R語(yǔ)言(Anonymous) · 2016-06-08 17:44

今天第十篇~~~

 

 

上一篇給大家介紹了在R中使用t檢驗(yàn)的方法,讓大家稍微熟悉了一下R的統(tǒng)計(jì)推斷功能。以后會(huì)陸續(xù)介紹更多的推斷方法。

今天介紹一些運(yùn)算函數(shù),它們的使用很簡(jiǎn)單,沒(méi)有什么難度,但是也會(huì)用的著。

在醫(yī)學(xué)統(tǒng)計(jì)學(xué)或者流行病學(xué)里的現(xiàn)場(chǎng)調(diào)查、樣本選擇經(jīng)常會(huì)提到一個(gè)詞:隨機(jī)抽樣。隨機(jī)抽樣是為了保證各比較組之間均衡性的一個(gè)很重要的方法。那么今天介紹的第一個(gè)函數(shù)就是用于抽樣的函數(shù)sample

> x=1:10

> sample(x=x)

 [1]  3  5  9  6 10  7  2  1  8  4

第一行代碼表示給x向量賦值1~10,第行代碼表示對(duì)x向量進(jìn)行隨機(jī)抽樣。結(jié)果輸出為每次抽樣抽得的結(jié)果,可以看出該抽樣為無(wú)放回抽樣------最多抽n次,nx向量中元素的個(gè)數(shù)。

 

如果想指定在該向量中抽取元素的個(gè)數(shù),需要加一個(gè)參數(shù)size

> x=1:1000

> sample(x=x,size=20)

 [1]  66 891 606 924 871 374 879 573 284 305 914 792 398 497 721 897 324 437

[19] 901  33

這是在1~1000的正整數(shù)中抽樣,其中size指定抽樣的次數(shù),抽了20次,結(jié)果如上所示。

這些都是無(wú)放回抽樣。所謂無(wú)放回抽樣,也就是說(shuō)某個(gè)元素一旦被選擇,該總體中就不會(huì)再有該元素。如果是有放回抽樣,則需添加一個(gè)參數(shù)repalce=T

> x=1:10

> sample(x=x,size=5,replace=T)

[1] 4 7 2 4 8

replace”就是重復(fù)的意思。即可以重復(fù)對(duì)元素進(jìn)行抽樣,也就是所謂的有放回抽樣。我們看上面的結(jié)果,元素45次隨機(jī)抽樣的過(guò)程中被抽取了兩次。


R語(yǔ)言代碼有一個(gè)特性就是“對(duì)位性”,也許我的詞不專業(yè),但是它的意思就是:如果我們輸入代碼的位置與某個(gè)函數(shù)中參數(shù)的位置一一對(duì)應(yīng)的話,我們可以不寫(xiě)該函數(shù)的參數(shù),如:

> x=1:10

> sample(x,20,T)

 [1] 1 2 2 1 5 5 5 9 9 5 2 9 8 3 4 8 8 8 1 1

在上述代碼中我們省略了參數(shù)xsizerepalce,但是仍然可以運(yùn)算并且表示對(duì)x向量有放回隨機(jī)抽取20次。我們之所以盡量在每次編寫(xiě)代碼時(shí)帶上參數(shù)是因?yàn)槲矣X(jué)得這個(gè)習(xí)慣比較好,而且看起來(lái)清楚明白。另外,省略參數(shù)的前提是你非常熟悉某個(gè)函數(shù)參數(shù)的位置,否則一旦沒(méi)有“對(duì)位”,那么結(jié)果肯定是錯(cuò)誤的。而且很多函數(shù)有較多的參數(shù),想記住它們的位置是困難的。而如果帶上參數(shù),那么即使位置不對(duì)應(yīng),也一樣可以運(yùn)算:

> x=1:10

> sample(size=20,replace=T,x=x)

 [1]  4  9  2  6  4  5  4  7 10  5  2  2  3  4  2  4  6  8  7  8

這種優(yōu)點(diǎn)顯而易見(jiàn),不僅清楚,而且無(wú)需對(duì)應(yīng)。另外我們也可以看出,有放回抽樣的話size可以無(wú)窮大,而無(wú)放回抽樣size的大小就取決于總體的容量了。

對(duì)于擲骰子,投硬幣(這可能是介紹抽樣必介紹的內(nèi)容),都屬于有放回抽樣。

這里要說(shuō)明,對(duì)于sample函數(shù),參數(shù)x可以是數(shù)值,也可以是字符,實(shí)際上參數(shù)x代表任意一個(gè)向量:

> a=c("A","B")

> sample(x=a,size=10,replace=T)

 [1] "B" "A" "A" "A" "B" "A" "A" "B" "A" "A"

上述代碼可以理解為擲硬幣,拋了10次,其中正面(A)與反面(B)出現(xiàn)的次數(shù)。


上述抽樣過(guò)程,每一個(gè)元素被抽取的概率相等,稱為隨機(jī)抽樣。

有時(shí)候我們的抽取元素的概率未必相等(如常見(jiàn)的二項(xiàng)分布概率問(wèn)題),此時(shí)我們需要添加一個(gè)參數(shù)prob,也就是“probability”(概率)的縮寫(xiě)。假設(shè)一名醫(yī)生給患者做某手術(shù)成功的概率是80%,那么現(xiàn)在他給20例病人做手術(shù),可能有哪幾次是成功的呢?代碼如下:

> x=c("S","F")

> sample(x,size=20,replace=T,prob=c(0.8,0.2))

 [1] "F" "S" "S" "S" "S" "S" "S" "S" "S" "S" "S" "S" "F" "S" "S" "F" "S" "S"

[19] "F" "S"

其中“S”代表成功,“F”代表失敗。

> x=c(1,3,5,7)

> sample(x,size=20,replace=T,prob=c(0.1,0.2,0.3,0.9))

 [1] 3 5 7 3 7 3 7 5 3 7 7 7 1 5 7 5 7 7 3 7

這些代碼告訴我們,對(duì)每一個(gè)元素都可以給定一個(gè)概率,且每個(gè)概率是獨(dú)立的,即在參數(shù)prob中,不一定所有元素的概率加起來(lái)等于1,它只代表某元素被抽取的概率而已。


對(duì)于sample函數(shù),其參數(shù)x可以是R中任意一個(gè)對(duì)象(如上述對(duì)字符的抽樣)。其中還有一個(gè)功能相同的函數(shù)sample.int,“int”即“intger”的縮寫(xiě),也就是“整數(shù)”。它的參數(shù)n必須是正整數(shù):

> x=-10.5:7.5

> sample(x=x,size=3);sample.int(n=x,size=3)

[1] -5.5 -7.5  0.5

Error in sample.int(x, size = 3) : invalid first argument

第一行代碼生成了-10.57.5的等差數(shù)列,結(jié)果輸出的第一行是sample的結(jié)果;第二行是sample.int的結(jié)果,提示錯(cuò)誤:“第一個(gè)自變量無(wú)效”,因?yàn)樗皇钦麛?shù)。其余的用法與sample是一樣的。


接下來(lái)介紹第二個(gè)函數(shù)max/min,以及pmax/pmin

> x=sample(1:1000,size=20)

> x

 [1] 514 164 107 354 719 317 204 372 714 522 900 635 441  7  230 653 420 804

[19] 817  36

> max(x);min(x)

[1] 900

[1] 7

1:1000中隨機(jī)抽取了20個(gè)數(shù),并得出它們的最大值和最小值。如果有缺失值,那么需要一個(gè)參數(shù)na.rm=T,即移除缺失值,這在前面的mean函數(shù)中已經(jīng)介紹過(guò)了:

> x=c(x,NA)

> mean(x);mean(x,na.rm=T);max(x);max(x,na.rm=T);min(x);min(x,na.rm=T)

[1] NA

[1] 446.5

[1] NA

[1] 900

[1] NA

[1] 7

第一行代碼我們給原來(lái)的向量x添加了一個(gè)缺失值“NA”,第二行代碼及結(jié)果分別顯示了在計(jì)算x的均值、最大值、最小值時(shí)是否帶參數(shù)na.rm=T的情況。

> x=sample(1:1000,size=20)

> y=sample(1:1000,size=20)

> x;y

 [1] 596 333 401 746 970 121 665 831 853 741 855  99 331 275 286 370 558 373

[19]  55 786

 [1] 291 360 964 173 497 553 155  34 488  29 661 736 591 602 548 527 450 416

[19] 596 965

這行代碼我們對(duì)1:1000分別進(jìn)行20次無(wú)放回隨機(jī)性抽樣得到向量xy。

> pmax(x,700)

 [1] 700 700 700 746 970 700 700 831 853 741 855 700 700 700 700 700 700 700

[19] 700 786

> pmin(y,700)

 [1] 291 360 700 173 497 553 155  34 488  29 661 700 591 602 548 527 450 416

[19] 596 700

第一個(gè)代碼表示用700x向量中的每一個(gè)元素進(jìn)行比較,將每次比較結(jié)果較大者輸出。

第二個(gè)代碼表示用700y向量中的每一個(gè)元素進(jìn)行比較,將每次比較結(jié)果較小者輸出。

這就是pmax/pmin的用法,p在這里表示“parallel”,可以理解為對(duì)向量做平行比較。

> pmax(x,y)

 [1] 596 360 964 746 970 553 665 831 853 741 855 736 591 602 548 527 558 416

[19] 596 965

該結(jié)果顯示了將x向量與y向量中的每個(gè)元素平行比較后得出的較大值的結(jié)果。如第一個(gè)元素的比較,x596,y291,所以結(jié)果輸出為596;第二個(gè)元素比較,x向量為333,y向量為360,因此輸出結(jié)果為360。后面的結(jié)果也是一樣。

 

因?yàn)?span style="font-family:Calibri">x向量與y向量是等長(zhǎng)的,所以我們可以對(duì)xy每一個(gè)元素進(jìn)行平行比較。因?yàn)?span style="font-family:Calibri">R中向量運(yùn)算時(shí)具有“循環(huán)原則”,所以在上面的例子中我們也可以用xy向量與一個(gè)元素“700”比較(相當(dāng)于包含一個(gè)元素“700”的向量重復(fù)了20次)。

如果循環(huán)完整,那么較短向量中的元素依次與較長(zhǎng)向量中的元素進(jìn)行比較

> x=c(1,3,5,7)

> y=c(4,6)

> pmax(x,y)

[1] 4 6 5 7

結(jié)果解釋:第一個(gè)是14比較的最大值,第二個(gè)是36比較的最大值,第三個(gè)是54比較的最大值,最后一個(gè)是76比較的最大值。如果循環(huán)不完整,自然會(huì)出現(xiàn)警告,但輸出結(jié)果依然是各元素依次平行比較的結(jié)果:

> x=c(1,3,5,7,9)

> y=c(4,6)

> pmax(x,y)

[1] 4 6 5 7 9

Warning message:

In pmax(x, y) : an argument will be fractionally recycled

警告的內(nèi)容是:自變量將部分循環(huán)。 


對(duì)于函數(shù)pmax/pmin,也有參數(shù)na.rm=T,用法是一樣的。同時(shí)有對(duì)應(yīng)的pmax.int/pmn.int,也就是比較向量?jī)?nèi)的元素必須是整數(shù)。


接下來(lái)給大家介紹今天的最后一個(gè)函數(shù)length,即查看某一對(duì)象的長(zhǎng)度。

> x=c(1,3,5,7,9,11)

> y=c("a","b","c")

> z=matrix(1:12,nrow=3)

> a=cbind(x,y)

> length(x);length(y);length(z);length(a)

[1] 6

[1] 3

[1] 12

[1] 12

結(jié)果告訴我們向量x的長(zhǎng)度是6,向量y的長(zhǎng)度是3,矩陣z的長(zhǎng)度是123×4)。以列結(jié)合的對(duì)象a的長(zhǎng)度為126×2)。

對(duì)于數(shù)據(jù)框,其長(zhǎng)度為列的長(zhǎng)度:

> x=1:5

> y=6:10

> z=7:11

> d=data.frame(x,y,z)

> length(d)

[1] 3

 

函數(shù)length也可以“反向使用”,即對(duì)于已知向量,先給定其長(zhǎng)度然后輸出結(jié)果:

> x=1:20

> length(x)=12

> x

 [1]  1  2  3  4  5  6  7  8  9 10 11 12

X向量的真實(shí)長(zhǎng)度為20,但我們輸出長(zhǎng)度為12x向量。

 

 

 

好了,本次就介紹到這里。

 

 

 

(圖片來(lái)源于網(wǎng)絡(luò))


負(fù)基礎(chǔ)學(xué)R語(yǔ)言(gh_d249a545f417)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
從零開(kāi)始學(xué)Python【4】--pandas(序列部分)
35行代碼搞定事件研究法(上)
細(xì)說(shuō)R語(yǔ)言的函數(shù)
數(shù)據(jù)分享|R語(yǔ)言Bootstrap、百分位Bootstrap法抽樣參數(shù)估計(jì)置信區(qū)間分析通勤時(shí)間和學(xué)生鍛煉數(shù)據(jù)
R語(yǔ)言系列第二期(番外篇):R先生教你統(tǒng)計(jì)概率與分布
函數(shù)size()用法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服