跳轉到內容

R 語言生物統計學/有序陣列

來自華夏公益教科書,開放的書籍,開放的世界

頻數分佈

[編輯 | 編輯原始碼]

示例 2.2.1 詳細說明了排序陣列的步驟。該陣列是一系列接受兩種戒菸計劃的受試者的年齡。假設您已經使用以下命令匯入資料集

> SmokeCProg <- read.csv("/EXA_C01_S04_01.csv", header=T, na.strings=NA)

最好使用描述性名稱(例如 SmokeCProg 代表戒菸計劃)而不是常用的佔位符名稱,例如 x、y。我們可以使用以下命令獲得年齡的排序陣列

> sort(SmokeCProg$AGE)

如表 2.3.1 所示,年齡的頻率分佈可以使用以下方法獲得

> table(cut(SmokeCProg$AGE, b=c(0,39,49,59,69,79,89)))
(0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 
    11      46      70      45      16       1 

cut 命令根據提供的斷點(0,39,49,59,69,79,89)劃分 AGE 變數。在表 2.3.2 中,提供了年齡的頻數表。正如 Venables 等人在“R 語言入門”一書中所建議的那樣,統計分析通常作為一系列步驟進行,中間結果儲存在物件中。與其他統計軟體包相比,R 語言僅提供最少的輸出。我們將在此示例中演示此重要特性。在前面的示例中,我們使用 table()cut() 命令計算了年齡的頻率分佈。我們可以使用以下方法將結果儲存在名為“AgeFreqTable”的物件中

> AgeFreqTable <- table(cut(SmokeCProg$AGE, b=c(0,39,49,59,69,79,89)))

您將不會獲得任何輸出。直到您呼叫物件“AgeFreqTable”

> AgeFreqTable
(0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 
    11      46      70      45      16       1

為了獲得累積頻率,我們可以使用 cumsum() 命令處理物件“AgeFreqTable”

> cumsum(AgeFreqTable)
(0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 
    11      57     127     172     188     189

在我們跳到相對頻率的計算之前,我們可以使用 length() 函式獲得變數中的觀測總數

> length(SmokeCProg$AGE)
[1] 189

我們可以透過將物件“AgeFreqTable”中的每個專案除以觀測總數來計算相對頻率

> AgeFreqTable/length(SmokeCProg$AGE)
    (0,39]     (39,49]     (49,59]     (59,69]     (69,79]     (79,89] 
0.058201058 0.243386243 0.370370370 0.238095238 0.084656085 0.005291005

同樣,可以使用以下方法計算累積相對頻率

> cumsum(AgeFreqTable)/length(SmokeCProg$AGE)
    (0,39]    (39,49]    (49,59]    (59,69]    (69,79]    (79,89] 
0.05820106 0.30158730 0.67195767 0.91005291 0.99470899 1.00000000

如果您想將相對頻率的結果四捨五入到 4 位數,可以使用 round() 函式

> round (AgeFreqTable/length(SmokeCProg$AGE),digits=4)
 (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 
0.0582  0.3016  0.6720  0.9101  0.9947  1.0000 

或者,您可以將相對頻率的結果儲存在一個新物件中,然後使用 round() 函式處理該物件

> AgeRelFreqTable <- AgeFreqTable/length(SmokeCProg$AGE)
> round (AgeRelFreqTable, digits=4)

練習:嘗試使用 R 命令將累積相對頻率的結果四捨五入到 4 位數。要繪製直方圖,可以使用 hist() 函式,例如

> hist(SmokeCProg$AGE)

您可以透過新增一些引數(即選項)來自定義直方圖,您可以在輸入 ?hist 以瞭解更多關於 hist() 函式引數的資訊。例如,如果您想繪製僅包含五個條形圖的直方圖(類似於圖 2.3.2)

> hist(SmokeCProg$AGE, breaks=5)

您可以向 hist() 函式新增更多引數,例如

> hist(SmokeCProg$AGE, breaks=5, ylim=c(0,70), main="Histogram of Ages of 189 subjects", col="red", xlab="Age")

請記住,當您有疑問時,請始終參考文件(例如 ?hist 或 help.search("histogram"))。在 95% 的情況下,您可以在幫助文件中找到答案。例如,您不知道如何繪製莖葉圖來顯示您的資料。您甚至不知道函式的名稱。您可以使用 help.search() 搜尋關鍵字“stem”,即

> help.search("stem")

結果中應該有一個名為 stem() 的函式。然後我們嘗試使用此函式來視覺化我們的資料

> stem(SmokeCProg$AGE)
The decimal point is 1 digit(s) to the right of the |
 3 | 04
 3 | 577888899
 4 | 00223333334444444
 4 | 55566666677777788888889999999
 5 | 0000000011112222223333333333333333344444444444
 5 | 555666666777777788999999
 6 | 000011111111111222222233444444
 6 | 556666667888999
 7 | 0111111123
 7 | 567888
 8 | 2

與 MINITAB 不一樣,莖單位由 scale 引數調整。上面的繪圖使用預設的 scale 為 1,相當於莖單位 =5。要將莖單位更改為 10,scale 引數的值應更改為 0.5

> stem(SmokeCProg$AGE, scale=0.5)
 The decimal point is 1 digit(s) to the right of the |
 3 | 04577888899
 4 | 0022333333444444455566666677777788888889999999
 5 | 00000000111122222233333333333333333444444444445556666667777777889999
 6 | 000011111111111222222233444444556666667888999
 7 | 0111111123567888
 8 | 2

集中趨勢

[編輯 | 編輯原始碼]
華夏公益教科書