這篇文章講R Lang中的基本統計函式。
在很多年前,我們第一次學習Excel試算表處理的時候,就擁有這樣的一些函式,比如sum()
、average()
等等。在R Lang中,我們仍然可以使用下面的一些統計函式,來進行基本的統計工作。
函式 | 說明 | 公式 |
---|---|---|
sum(x) | 加總和 | |
cumsum(x) | 累積加總和 | |
diff(x) | x[i + 1] - x[i] | |
lag(x, k) | x[i - k] | |
lead(x, k) | x[i + k] | |
prod(x) | 乘積 | |
cumprod(x) | 累計乘積 | |
mean(x) | 平均值 | |
median(x) | 中位數 | |
var(x) | 變異數,共變異數 | |
sd(x) | 標準差 | |
range(x) | 範圍 | (min(x), max(x)) |
min(x) | 最小值 | min(x) |
max(x) | 最大值 | max(x) |
quantile(x) | 百分位數 | |
fivenum(x) | 五數摘要 | |
sample(x) | 隨機抽樣 | random sample |
類別資料表格函式
列聯表(contingency table)通常被用來處理類別型資料。它將資料分組並統計每個組別中的頻率或計數。列聯表提供了一個簡單的方式來了解變量之間的關聯性和分布情況。在講factor因子型變數的時候,我們簡單涉及到這部分內容。簡單來講,類別型資料表示不同的類別或群體,而非連續性資料。可以分為名義型資料和有序型資料:
- 名義型資料(Nominal data):名義型資料是沒有內在順序或等級的類別型資料。它表示不同的類別或群體,但沒有任何順序。例如,性別(男、女)和眼睛顏色(藍、綠、棕等)就是名義型資料。
- 有序型資料(Ordinal data):有序型資料是具有固定順序或等級的類別型資料。它表示不同的類別或群體,並且這些類別之間存在著順序關係。例如,教育程度(小學、中學、大學)和商品評級(差、中、好)就是有序型資料。
類別型資料在統計分析中很常見,例如進行列聯分析、卡方檢定和建立分類模型等。
創建列聯表
使用table()
或xtabs()
函式來從向量等物件創建一個列聯表。使用函式xtabs()
可以從資料框架中, 利用統計模型公式(model formula)創造一個列聯表。
常用引數如下:
- formula:使用統計模型公式輸入
- data:資料框架名
- na.action = “na.omit”:缺失值處理方式
- exclude:排除類別水準的細項,自動內設排除缺失值
- useNA:處理缺失值選項
- “no”:排除缺失值
- “ifany”:納入缺失值,若類別水準的計數(count)為正整數
- “always”:永遠納入缺失值成為1類別水準。即使類別水準的計數(count)為0仍然自成1個類別水準
我們準備了一份資料,這是一份關於年長退伍軍人罹患肺癌, 且無法接受手術之臨床試驗。相關的csv檔案可以在我的下載站免費下載。檔案名字是survVATrial.csv。
我們首先解釋一下其中的變數:
變數 | 描述 |
---|---|
threat(therapy) | 治療組別:0 = 標準;1 = 新治療 |
cellcode | 細胞型態:1 = 鱗狀細胞;2 = 小細胞;3 = 腺體細胞;4 = 大細胞 |
time | 存活時間,診斷日期至死亡日期,單位以日計 |
censor | 設限狀態: 0 = 存活,1 = 死亡 |
diagtime | Karnofsky performance score,診斷時身體狀態表現的分數 |
kps | 診斷到隨機分配的時間,以月計 |
age | 診斷時的年齡(以年計) |
prior | 先前是否接受治療;0 = 無;1 = 有 |
對資料進行一份預處理:
1 | ## 讀入csv資料 |
接下來我們創建需要的列聯表:
1 | tb <- table(file$censor) |
table()
函式和xtabs()
函式對於高維度列聯表的呈現以list形式,較不方便操作,可以改用函式ftable()
,從任意向量、矩陣、陣列、資料框架創造一個扁平列聯表。變數(欄位,column)為分類因子變數,另外再加上各組頻率數目,每一列(row)代表每一種分類的類別水準(level)。
1 | tb_3 <- ftable(file$cellcode, file$threat, file$censor) |
計算列聯表的邊際總和及相對頻率
使用margin.table()
函式可以計算列聯表的邊際總和。何為邊際總和?這是一個統計概念。是指在多維度資料表中,計算每個維度的總和或計數。它提供了對資料的不同維度的總體概覽。prop.table()
可以計算列聯表物件的相對頻率。何為相對頻率?相對頻率是一種描述事件發生概率的度量方式。表示某個事件發生的次數相對於全部觀察次數的比例。
話不多說上例子:
1 | tb_2 <- xtabs(~ censor + cellcode, data = file) |
隨機抽樣函式
使用sample()
函式實現隨機抽樣。該函式的定義如下:
1 | sample(x, size, replace = FALSE, prob = NULL) |
解釋一下它的引數:
- x:為一長度大於1的任意向量,或是一個正整數。
- size = k:設定所要抽出之樣本數。
- prob:設定每一個個體被抽取之相對應機率或比率之向量,若無設定值,則每一個個體被抽取之相對應機率為相等。
- replace = FALSE:邏輯指令,是否可重複抽取。
如果我們需要復現隨機抽樣的結果,我們需要提前設定種子。例如:
1 | set.seed(123) |
這樣,每次運行這兩段程式碼,都會得到相同的結果。