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