R語言經典統計分析

brucexia發表於2024-10-16

經典統計分析包括了許多常用的統計方法和技術,用於資料的描述、推斷和建模。本節將介紹經典統計分析方法(包括t檢驗、方差分析、卡方檢驗、線性迴歸)在R語言中的實現。

5.1.1 t檢驗

樣本均值(sample mean),又稱樣本均數,是描述一組資料集中趨勢的重要統計量。它是透過將一組資料的所有數值相加後,再除以這組資料的個數來計算的。在統計學中,方差是每個樣本值與樣本均值之差的平方的平均值。方差衡量了資料的離散程度,即資料點相對於均值的散佈情況。標準差則是方差的平方根,表示資料相對於均值的平均偏離程度。標準差也是一種度量資料分散程度的重要指標。

t檢驗是一種統計方法,用於比較兩個樣本的均值是否存在顯著差異。它基於樣本均值和樣本標準差,透過計算t值來判斷兩個樣本均值是否顯著不同。t檢驗適用於連續變數的獨立樣本或配對樣本的比較,在醫學領域中廣泛使用。t檢驗有兩種型別:單樣本t檢驗和雙樣本t檢驗。

1. 單樣本t檢驗

單樣本t檢驗的目的是檢驗單樣本的均值是否與已知總體的均值相等。

應用場景舉例:在某偏遠地區隨機抽取若干名健康男子,檢驗其脈搏均值是否高於全體健康男子的平均水平;檢驗某一線城市全體高三學生的視力水平是否低於全國高三學生的視力水平。

在R語言中,可以使用t.test函式進行單樣本t檢驗。具體步驟包括:

設定零假設(H0):假設檢驗的零假設通常是樣本均值等於總體均值。

收集樣本資料。

執行單樣本t檢驗:使用t.test函式,指定樣本資料和總體均值,得出檢驗結果,包括t值、p值和置信區間。

2. 雙樣本t檢驗

雙樣本t檢驗的目的是檢驗兩個獨立樣本的均值是存在顯著差異,要求兩樣本獨立,服從正態分佈或近似正態。

應用場景舉例:為研究某種治療兒童貧血的新藥的療效,以常規藥作為對照,治療一段時間後,檢驗施以新藥的兒童的血紅蛋白的增加量是否比常規藥的大;檢驗兩種藥物對治療高血壓的效果,檢驗兩組藥物的降壓水平是否存在顯著差異。

在R語言中,也可以使用t.test函式進行雙樣本t檢驗。具體步驟包括:

設定零假設(H0):假設檢驗的零假設通常是兩個樣本的均值相等。

收集兩組獨立樣本資料。

執行雙樣本t檢驗:使用t.test函式,指定兩個樣本資料,得出檢驗結果,包括t值、p值和置信區間。

在執行t檢驗時,關鍵的輸出包括t值、自由度、p值和置信區間。p值通常用來判斷檢驗結果的顯著性,如果p值小於顯著性水平(通常為0.05),則可以拒絕零假設,認為兩個樣本的均值存在顯著差異。執行t檢驗的示例R程式碼如下:

#單樣本t檢驗

set.seed(123)

blood_pressure <- rnorm(30, mean = 120, sd = 10) #建立資料blood_pressure

#執行單樣本t檢驗,比較樣本blood_pressure的均值與總體均數mu=130的差異

t_test_single_blood_pressure <- t.test(blood_pressure, mu = 130)

#輸出單樣本t檢驗結果

print(t_test_single_blood_pressure)

#雙樣本t檢驗

set.seed(123)

baseline_blood_sugar <- rnorm(20, mean = 100, sd = 15) #建立資料baseline_blood_sugar

endline_blood_sugar <- rnorm(20, mean = 120, sd = 15) #建立資料endline_blood_sugar

#執行雙樣本t檢驗,比較樣本baseline_blood_sugar和endline_blood_sugar均值的差異

t_test_double_blood_sugar <- t.test(baseline_blood_sugar, endline_blood_sugar)

#輸出雙樣本t檢驗結果

print(t_test_double_blood_sugar)

執行結果如圖5-1所示。該圖展示了單樣本和雙樣本t檢驗的結果,其中p值分別為2.431e-06和0.0003,均小於0.05。結果提示,blood_pressure的均值與總體均數130之間存在顯著差異,baseline_blood_sugar與endline_blood_sugar之間均值也存在顯著差異,且這種差異具有統計學意義。

圖5-1

總的來說,t檢驗是一種常用的假設檢驗方法,用於比較樣本均值之間的差異。在R語言中,使用t.test函式進行t檢驗非常方便,能夠幫助使用者快速、準確地進行顯著性檢驗。

5.1.2 方差分析

方差分析(Analysis of Variance,簡稱ANOVA),由英國統計學家R.A.Fisher首創,為紀念Fisher故以“F”命名,所以方差分析又稱“F檢驗”。它用於兩個及兩個以上樣本均值差異的顯著性檢驗。

方差分析中使用頻率最高的是單因素方差分析。它用於分析一類定類資料與定量資料之間的差異性,且定類資料通常為多分類資料。例如,分析不同班級(1班、2班、3班)學習成績之間的差異時,可以使用單因素方差分析來比較這3個班級學習成績均值的差異(獨立樣本t檢驗只能進行兩組資料之間均值差異的比較)。

在R語言中,可以使用stats包中的aov函式和car包中的Anova函式進行單因素方差分析。具體步驟包括:

設定零假設(H0):假設檢驗的零假設通常是所有組的均值相等。

收集各組樣本資料。

執行單因素方差分析:使用aov函式指定因變數和組變數,使用summary函式獲取方差分析的結果,包括F統計量、自由度和p值。

在方差分析中,關鍵的輸出值為F值和p值。F值用於判斷組間均值差異是否顯著;當p值小於顯著性水平(通常為0.05)時,則可以拒絕零假設,認為組間均值存在顯著差異。執行方差分析的示例R程式碼如下:

#建立資料框(包含3個組別的計量資料)

data <- data.frame(

  RecoveryTime = c(10, 12, 8, 9, 11, 14, 13, 7, 6, 5,11), #恢復時間

  Treatment = factor(c("TreatmentA", "TreatmentB", "TreatmentC", "TreatmentA",

                       "TreatmentB", "TreatmentC", "TreatmentA", "TreatmentB",

                       "TreatmentC", "TreatmentA", "TreatmentB")))#治療方法

#進行方差分析

aov_result <- aov(RecoveryTime ~ Treatment, data = data)

summary(aov_result)

執行結果如圖5-2所示,該圖展示了方差分析結果,透過summary(aov())計算得出F值為0.116和p值為0.892。p值大於0.05說明治療方法對恢復時間沒有顯著影響。

圖5-2

總的來說,方差分析是一種常用的統計方法,用於比較組間均值是否有顯著差異。在R語言中,使用aov函式和Anova函式進行方差分析非常方便,能夠幫助使用者快速、準確地進行組間差異比較。

5.1.3 卡方檢驗

卡方檢驗是一種用於檢驗兩個或多個分類變數之間是否存在相關性的統計方法。卡方檢驗適用於分析分類資料,通常用於檢驗觀測頻數(frequency)與期望頻數之間的差異是否顯著。頻數又稱“次數”,是指變數值中代表某種特徵的數(標誌值)出現的次數。在R語言中,可以使用基本的chisq.test函式進行卡方檢驗。以下是關於卡方檢驗的詳細介紹。

在單樣本卡方檢驗中,我們測試一個分類變數的頻數是否符合某種理論分佈。假設檢驗的零假設是觀測頻數符合某種預期的分佈。在R語言中,可以使用chisq.test函式指定觀測頻數和理論頻數的期望比例,得出卡方統計量和p值。

在卡方檢驗中,關鍵的輸出包括卡方統計量、自由度和p值。p值通常用來判斷檢驗結果的顯著性。如果p值小於顯著性水平(通常為0.05),則可以拒絕零假設,認為觀測頻數與期望頻數存在顯著差異,或者兩個分類變數之間存在相關性。

執行卡方檢驗的示例R程式碼如下:

#建立資料框

data <- data.frame(

  PatientID = 1:80,

  Treatment = c(rep("TreatmentA", 40), rep("TreatmentB", 40)),

  CureStatus = c(rep("Cured", 30), rep("Cured", 30), rep("Not Cured", 20))

)

#建立列聯表

table_data <- table(data$Treatment, data$CureStatus)

#進行卡方檢驗

chi_result <- chisq.test(table_data)

#輸出結果

print(chi_result)

程式碼的執行結果如圖5-3所示,該圖展示了卡方檢驗的結果。透過chisq.test函式計算得出的卡方統計量的X-squared值為24.067、p值為9.306e-07。p值小於0.05,說明治療方法和治癒結果之間存在顯著關聯。

圖5-3

總的來說,卡方檢驗是一種常用的統計方法,用於檢驗分類變數之間的相關性,能夠幫助研究者在資料分析中進行合理的推斷。在R語言中,使用chisq.test函式進行卡方檢驗非常方便,能夠快速準確地進行相關性分析。

5.1.4 簡單線性迴歸分析

簡單線性迴歸分析是統計學中經常使用的一種方法,用於建立和評估一個自變數對一個連續因變數的線性關係。簡單線性迴歸分析透過擬合一條直線來描述自變數與因變數之間的關係,以預測和解釋因變數的變化。下面是關於簡單線性迴歸分析的詳細介紹:

簡單線性迴歸模型可以表示為:

Y = β0 + β1X + ε

其中,Y是因變數(響應變數)、X是自變數、β0是截距項、β1是斜率、ε是誤差項(隨機誤差)。

迴歸分析的目標是透過估計截距和斜率,擬合一條最優的直線來描述自變數和因變數之間的關係。通常使用最小二乘法來估計迴歸係數,使得預測值與實際值的殘差平方和最小化。簡單線性迴歸模型可以用來預測因變數的取值,也可以用來推斷自變數和因變數之間的關係程度。

在R語言中,可以使用lm()函式進行簡單線性迴歸分析。具體步驟包括:

收集自變數和因變數的資料。

執行lm()函式,指定因變數與自變數,得出迴歸係數、擬合直線及相關統計指標。

透過summary()函式獲取迴歸模型的摘要統計資訊,包括截距、斜率、R方值、t值和p值等。

簡單線性迴歸分析能夠幫助研究者理解和預測變數之間的關係,它提供了一種簡單而有效的工具來解釋和探究資料背後的模式和規律。執行簡單線性迴歸分析的示例R程式碼如下:

#建立資料框

data <- data.frame(

  Weight = c(61, 75, 83, 92, 100),  #體重,單位:千克

  BloodPressure = c(110, 123, 130, 150, 160)  #血壓,單位:毫米汞柱

)

#進行簡單線性迴歸分析

model <- lm(BloodPressure ~ Weight, data = data)

#檢視模型輸出結果

summary(model)

lm()函式中的“BloodPressure ~ Weight”表示正在擬合一個模型,其中血壓(BloodPressure)是因變數,體重(Weight)是自變數,“data = data”指定了包含資料的資料框。Summary()函式將提供模型的詳細摘要,包括迴歸係數、截距、R平方值、F統計量和p值等。這些統計量可以幫助我們瞭解模型的擬合情況和變數之間的線性關係是否顯著。程式碼執行結果如圖5-4所示,該圖展示了簡單線性迴歸的結果。

圖5-4

從圖5-4中可以看到,截距(Intercept)是26.3778,斜率(Weight的係數)是1.3166,這表示每增加1千克體重,血壓平均增加1.3166毫米汞柱;p值為0.02809,小於0.05,表明體重與血壓之間存在顯著的線性關係;R平方值(Multiple R-squared)為0.965,表示模型解釋了96.5%的血壓變異。

https://www.cnblogs.com/brucexia/p/18466799

相關文章