以下內(nèi)容為閱讀醫(yī)學統(tǒng)計學筆記與R語言所做的筆記浊伙。而原文又為孫振球备籽,徐勇勇老師的<<醫(yī)學統(tǒng)計學>> 第4版的一份筆記,及用R語言的實現(xiàn)哗戈。目前還未能找到孫魂毁、徐二位老師教材的電子版作為比對玻佩,因此需要原文與本人的看法存在出入的地方均以張厚粲<現(xiàn)代心理與教育統(tǒng)計>,r中語法有出入的地方則以<r語言實戰(zhàn)>為準席楚。
2 第二章 計量資料的統(tǒng)計描述
2.1 描述統(tǒng)計
檢測潛在的異常值咬崔,檢驗數(shù)據(jù)質(zhì)量
助于"理解"數(shù)據(jù)(了解數(shù)據(jù)的特點)
常用的集中量數(shù)(位置度量):平均值,中位數(shù)烦秩,四分位數(shù)垮斯,第三、四分位數(shù)只祠,眾數(shù)甚脉,最大值,最小值等
常用的離散量數(shù)(離散度量):全距铆农,標準差牺氨,方差,四分位間距墩剖,變異系數(shù)猴凹。
例題:
- 查看全距
#read data,na.strings="NA"means all missing data will change into "NA" as strings
rbc <- read.table("tst.txt",sep="\t", na.strings="NA")
rbc <- as.matrix(rbc)
rbc_q <- c()
#遍歷rbc中的列岭皂,首尾相接存入rbc中郊霎。
for (i in 1:nrow(rbc)){
rbc_q <- c(rbc_q, rbc[i,])
}
#查看變量類型
typeof(rbc_q)
##[1] "list"
rbc_v <- as.vector(rbc_q)
#omit the NA
rbc_v <- na.omit(rbc_v)
#evaluate range of data
rge<-max(rbc_v)-min(rbc_v)
#range()返回兩個極值而非全距
rge
## 2.39
- 計算頻數(shù)分布
- 確定組段數(shù)
h=3.49min(s,IQ/1.349) * n1/3
s為標準差
IQ為四分位數(shù)
#計算標準差
s<-sd(rbc_v)
## [1] 0.4457298
#計算分位數(shù)( 25% 、75% 兩個分位數(shù))
iq<-as.numeric(quantile(rbc_v,0.75)-quantile(rbc_v,0.25))
## 0.565
#確定組數(shù)
h<-3.49*min(s,iq/1.349)*(length(rbc_v)^(1/3))
## 7.553617
#向上取整
h<-ceiling(h)
## 8
#每組的距離
i<-rge/h
- 頻數(shù)分布
#設置分組區(qū)間左右兩側(cè)的值(上下限)
breaks = seq(min(rbc_v), max(rbc_v), length.out = 8)
#按照breaks將rbc切開爷绘,計算每個區(qū)間內(nèi)的頻次
rbc_v.cut = cut(rbc_v, breaks, right=T,include.lowest=T)
#頻次統(tǒng)計
rbc_v.freq = table(rbc_v.cut)
#直方圖
## y值為從0到1的頻率直方圖
hist(rbc_v, right=FALSE,
breaks = breaks, labels =TRUE,
freq = FALSE, col = "#A8D6FF",
border = "white", ylim=c(0,1))
lines(density(rbc_v),col="red",lwd=2)
2.4 描述統(tǒng)計
- 集中量數(shù)
#算術(shù)平均值
mean(x)
#幾何平均值
exp(mean(log(x)))
幾何均值:
首先兩遍取對數(shù)
ln(G) = ln(X1×X2×...×Xn) /n = [ln(X1) + ln(X2) + ... + ln(Xn)] / n
lnx?=nlnx
ln(x-n)=ln(x)/n
即求完原變量的自然對數(shù)的均值后( mean(log(x)) )书劝,再計算以自然常數(shù)e為底,ln(G)為冪的值即可土至,這在R中可以輕松實現(xiàn)购对。
參考自biye5u.com. R語言中計算幾何平均數(shù)
#中位數(shù)
median(x)
quantile(x)
- 離散趨勢
#極差(全距)
range(x)
max(x)-min(x)
#四分位間距
IQR(x)
quantile(RBC_v, 0.75)-quantile(RBC_v, 0.25)
變異系數(shù)(百分之)
sd(x)/mean(x)*100
- 其他描述統(tǒng)計
summary(x)
#numeric
#min, max, median, mean, 1st-4th quantiles
#factor/charact
#frequency
#眾數(shù)
mode(x) #為查看數(shù)據(jù)類型,類似typeof(x)
#可以用table()和sort()來尋找眾數(shù)
rbc_t <- table(rbc_v) # 計算每個元素的出現(xiàn)的次數(shù)
sort(rbc_t, decreasing = TRUE) # 對計算的次數(shù)進行排序陶因,最前邊就是眾數(shù)
#或者結(jié)合 which()函數(shù)確定眾數(shù)和其次數(shù)
rbc_t <- table(rbc_v)
rbc_t[which(((rbc_t==max(rbc_t))==T))]#選出rbc中最大的數(shù)
m==max(m):m中每個數(shù)是不是和最大的數(shù)相等骡苞,返回為T/F
要首先對rbc進行頻次統(tǒng)計,否則就會對取出原數(shù)據(jù)中最大的數(shù)而非頻次最大的數(shù)。
2.5 正態(tài)分布
- 概率密度函數(shù)
概率密度函數(shù)probability density解幽√可以求出指定均值/標準差下每個點的概率密度。越高就代表著這個點/區(qū)間的概率越密集(大)
#在-10~10區(qū)間等分的 100個 數(shù)據(jù)集x
x <- seq(-10, 10, by = .1)
#創(chuàng)建一個均值是2.5躲株,標準差是0.5正態(tài)分布 y
y <- dnorm(x, mean = 2.5, sd = 0.5)
#將 y 中的落在x數(shù)據(jù)集上的數(shù)據(jù)畫出來
plot(x,y,col="red",pch=20)
- 概率累計分布函數(shù)
累積分布函數(shù)Cumulative Distribution 片部,給出一個正態(tài)分布中小于一個給定數(shù)字的累計概率
#在-10~10區(qū)間等分的 40個 數(shù)據(jù)集x
x <- seq(-10, 10, by = .5)
#創(chuàng)建一個均值是2.5,標準差是0.5正態(tài)分布 y
y <- pnorm(x, mean = 2.5, sd = 0.5)
#將 y 中的落在x數(shù)據(jù)集上的累計概率畫出來
plot(x,y,col="red",pch=20)
為小于該點的概率密度的相加霜定。
- 正態(tài)分位數(shù)函數(shù)
qnorm()給出某個點在指定均值和標準差下的分位數(shù)
和pnorm()相反档悠,pnorm()
為返回該分位數(shù)的概率。
- 生成正態(tài)分布函數(shù)
rnorm(n然爆,mean站粟,sd)
#設置隨機種子,便于重復后續(xù)的數(shù)據(jù)選取
set.seed(50)
#在標準正態(tài)分布中隨機選取50個數(shù)據(jù)
y <- rnorm(50)
#對選區(qū)的數(shù)據(jù)繪制頻率分布圖
hist(y,col="#A8D6FF",labels =TRUE)
為什么設定種子:weixin_30595035曾雕。R 語言設定隨機數(shù)種子奴烙。CSDN。
2.6 正態(tài)分布檢驗
方法:
計算綜合統(tǒng)計量:動差法(峰度和偏度剖张,三級動差)切诀、蝦皮羅-威爾克S-W法、達格斯提諾(D'Agostino)D檢驗搔弄、shapiro-francia W'檢驗
正態(tài)分布的擬合優(yōu)度檢驗:皮爾遜精確chi-square檢驗幅虑、對數(shù)似然比檢驗、科莫格羅夫-謝米洛夫K-S檢驗
圖示:PP圖(百分位圖)顾犹、QQ圖(分位數(shù)圖)倒庵、穩(wěn)定化概率圖(SP圖)
規(guī)則:
SPSS :樣本含量3 ≤n ≤5000 時,結(jié)果以Shapiro - Wilk (W 檢驗) 為難,當樣本含量n > 5000 結(jié)果以Kolmogorov - Smirnov 為準。
SAS 規(guī)定:樣本含量n ≤2000 時,結(jié)果以Shapiro - Wilk (W 檢驗) 為準,當樣本含量n >2000 時,結(jié)果以Kolmogorov - Smirnov (D 檢驗) 為準炫刷。
函數(shù):
ks.test(x,pnorm(0,1))
#檢驗x與均值為0擎宝,標準差為1的正態(tài)分布之間是否有差異。
shaprio.test(x)
#nortest包
lillie.test()#可以實行更精確的Kolmogorov-Smirnov檢驗浑玛。
ad.test()#進行Anderson-Darling正態(tài)性檢驗绍申。
cvm.test()#進行Cramer-von Mises正態(tài)性檢驗。
pearson.test()#進行Pearson卡方正態(tài)性檢驗顾彰。
sf.test()#進行Shapiro-Francia正態(tài)性檢驗极阅。
#fBasics包
normalTest()#進行Kolmogorov-Smirnov正態(tài)性檢驗。
ksnormTest() #進行Kolmogorov-Smirnov正態(tài)性檢驗涨享。
shapiroTest() #進行Shapiro-Wilk's正態(tài)檢驗筋搏。
jarqueberaTest() #進行jarque-Bera正態(tài)性檢驗。
dagoTest() #進行D'Agostino正態(tài)性檢驗灰伟。
gofnorm() #采用13種方法進行檢驗拆又,并輸出結(jié)果儒旬。##并不存在gofnorm這個函數(shù)名栏账。
- 直方圖
#確定分組數(shù):
IQ<-quantile(x,0.75)-quantile(x, 0.25)
h=3.49min(s,IQ/1.349)n^1/3^
#直方圖
hist(x, right=FALSE,
breaks = h, labels =TRUE,
freq = FALSE, col = "#A8D6FF",
border = "white", ylim=c(0,1))
#正態(tài)曲線
lines(density(x),col="red",lwd=2)
- 概率密度圖
直方圖的平滑版
#圖名
maintxt<-paste("N=",length(x),",","Mean=",round(mean(x),3),",","Sd=",round(s,3))
#作圖
plot(density(x),col="red",lwd=2,main = maintxt)
- QQ-plot
只需要確定數(shù)據(jù)點是否沿著直線(有時也稱為Henry’s line)來判斷數(shù)據(jù)是否符合正態(tài)帖族。如果點靠近參考線并且在置信區(qū)間內(nèi),則認為滿足了正態(tài)性假設挡爵。
如果qq圖所示的非正態(tài)分布(系統(tǒng)地偏離參考線)時竖般,通常第一步是對數(shù)據(jù)進行對數(shù)變換, 并重新檢查對數(shù)變換后的數(shù)據(jù)是否正態(tài)分布茶鹃』恋瘢可以應用log()函數(shù)進行對數(shù)變換。
#載入程集包car
library(car)
#設置種子
set.seed(42)
#隨機正態(tài)分布的qq圖
dat_hist <- data.frame( value = rnorm(12, mean = 165, sd = 5))
qqPlot(dat_hist$value)
library(car)
qqPlot(as.numeric(rbc_v),ylab="RBC", main="RBC QQ-plot")
- shaprio-wilk檢驗與k-s檢驗
shapiro.test(x)
隨著觀測數(shù)的增加闭翩,Shapiro-Wilk檢驗變得非常敏感挣郭,甚至對正態(tài)性的一個 微小偏差也非常敏感。
樣本量較大(n>5000時)使用ks檢驗效度更高疗韵。
第三章 總體均值的估計與假設檢驗
3.1 推論統(tǒng)計
樣本量較小(n<30)時t檢驗比正態(tài)分布要效果更好兑障, 大樣本上與正態(tài)分布無差異。當自由度df=∞時蕉汪,t分布曲線為標準正態(tài)分布曲線流译。
- 假設檢驗
假設檢驗:利用反證法,從事情多反面出發(fā)(H0)者疤,通過其發(fā)生的概率(p-value)福澡,間接判斷要解決的問題(H1)是否成立。
- 統(tǒng)計量與標準誤
樣本:從總體中抽取出來的驹马,能夠反映總體特征的少量數(shù)據(jù)革砸。
標準誤:從總體中抽取不同的樣本,不同樣本之間的均值的標準差糯累、不同樣本之間的標準差的標準差這種樣本統(tǒng)計量的標準差就叫標準誤算利。反映了抽樣統(tǒng)計量的離散程度。(除此之外還有樣本均值的均值等寇蚊,用處暫時不大)
3.2 t分布
當總體形態(tài)未知笔时,樣本量較大時,可以用均值標準誤的無差估計量Sn-1(通常分母為n-1)作為總體標準差仗岸。
自由度:自由取值的個數(shù)允耿。如 X+Y+Z=1 ,有3個變量扒怖,但是能夠自由取值的自由兩個(這兩個可以隨意取值较锡,為了使X+Y+Z=1成立,第三個數(shù)必須為一個固定的數(shù)值)盗痒,故其自由度 v=2蚂蕴。自由度的取值一般為:v=n-m低散。其中n為計算某一統(tǒng)計量是用到的數(shù)據(jù)個數(shù),m為計算該統(tǒng)計量是用到的其他獨立統(tǒng)計量個數(shù)骡楼。
t分布是一簇曲線熔号,其形態(tài)變化與n(即其自由度)大小有關(guān)。自由度n越小鸟整,t分布曲線越低平引镊;自由度n越大,t分布曲線越接近標準正態(tài)分布(u分布) 曲線篮条,當自由度無限大時弟头,t分布就成了正態(tài)分布。
- 概率密度函數(shù)dt()
dt(x, df, log=F)
#正態(tài)分布曲線涉茧,紅色
curve(dnorm(x),xlim=c(-5,5),ylim=c(0,0.45),ylab="Student's t Density",col="red",lty=1,lwd=3)
abline(v=0,lwd=1,col="black")#添加中軸線
#df=1時的t分布曲線赴恨,綠色
curve(dt(x,1),col="green",lty=2,lwd=3,add=TRUE)
curve(dt(x,2),col="brown",lty=3,add=TRUE)
#df=5時的t分布曲線,藍色
curve(dt(x,5),col="blue",lty=4,lwd=3,add=TRUE)
curve(dt(x,20),col="dark green",lty=5,add=TRUE)
legend(2,0.38,c("normal","df=1","df=2","df=5","df=20"),
col=c("red","green","brown","blue","dark green"),lty=1:5)
當樣本量足夠大時(df足夠大)伴栓,比如df=30時伦连,
#正態(tài)分布,紅色粗線
curve(dnorm(x),xlim=c(-5,5),ylim=c(0,0.45),ylab="Student's t Density",col="red",lty=1,lwd=10)
#df=30,藍色的細虛線
curve(dt(x,30),col="blue",lty=6,add=TRUE)
可見此時兩者已經(jīng)接近完全重合挣饥。
- 概率累積分布函數(shù)pt()
# 單側(cè) p值除师,df=5
# P(t => 1.9)t值大于等于1.9的概率
pt(q=1.9, df=5, lower.tail = F)
## [1] 0.05793165
## 雙側(cè) p-value
## 兩邊對稱單側(cè)相加
pt(q=1.9, df=5, lower.tail = F) + pt(q=-1.9, df=5, lower.tail = T)
## 0.1158633
## 對稱性:單側(cè)p值*2=雙側(cè)p值
pt(q=1.9, df=5, lower.tail = F)*2
## 0.1158633
- 求置信區(qū)間的qt()
# 雙尾的95%置信區(qū)間的t值(α=0.05,在取值時除以2)
qt(p=0.025, df = 5, lower.tail = T)
## -2.570582
- 隨機生成符合t分布的數(shù)據(jù)rt()
# 設置種子
set.seed(61)
n <- 10000
# 生成1000個符合df=5的t分布的數(shù)據(jù)
y_rt <- rt(n, df = 5)
# 做直方圖
hist(y_rt, breaks = 100, main = "Randomly t density", freq=FALSE,
col="#A8D6FF",xlim=c(-10,10),ylim=c(0,0.4))
lines(density(y_rt), col="red", lwd=2)
- 參數(shù)估計
用已知的樣本參數(shù)推斷總體參數(shù)扔枫。
- σ未知且n較小(n≤60)時汛聚,按照t分布計算。
- σ未知且n較大(n>60)時短荐,按照標準正態(tài)分布(即u分布或Z分布)計算倚舀。
- 假設檢驗
具體步驟不再贅述。
3.3 t檢驗的分類與應用
- t檢驗與Z檢驗
t檢驗基本上有三種類型:
- 單樣本t檢驗(One sample/gourp t-test)
- 配對樣本t檢驗(Paired/matched t-test)
- 兩種獨立樣本t檢驗(Two sample/gourp t-test)
R的提供了t.test()忍宋,可以用于各種t檢驗痕貌。
如果只提供一組數(shù)據(jù),則進行單樣本t檢驗糠排,如果提供兩組數(shù)據(jù)舵稠, 則進行兩樣本t檢驗,主要的相關(guān)的參數(shù)是:
- paired:TRUE-配對t檢驗入宦,F(xiàn)ALSE-兩獨立樣本t檢驗哺徊。
- var.equal,對于兩獨立樣本t檢驗乾闰,還要注意方差是否齊性落追,TRUE則進行經(jīng)典方法,F(xiàn)ALSE則采用近似t檢驗涯肩, 將數(shù)據(jù)取對數(shù)處理后進行t檢驗轿钠,t.test()中是采用Welch t檢驗巢钓。
- alternative參數(shù),用來指定檢驗方式疗垛,默認是雙側(cè)檢驗(“two.sided”)症汹,還可以是左側(cè)檢驗(“l(fā)ess”)和右側(cè)檢驗(“greater”)。
- 單樣本t檢驗
t.test(data, mu= , alterntive="two sides"/"lesser"/"greater")
- 配對t檢驗
setwd("C:/users/lenovo/desktop")
m <- read.table("1.txt",header=F)
home_df <- as.data.frame(m)
t.test(m$V1,mu=140)
## t = -2.1367, df = 35, p-value = 0.03969
#左側(cè)檢驗
t.test(home_df$hb, mu=140, alternative = "less")
#右側(cè)檢驗
t.test(home_df$hb, mu=140, alternative = "greater")
直接計算出t值后求p值
#直接計算出t值后继谚,使用pt函數(shù)計算p值的方式
t.value <- mean(home_df$hb - 140) /
sd(home_df$hb) * sqrt(nrow(home_df))
#-2.136668
#雙側(cè)檢驗烈菌,概率值乘以2
p.value <- pt(t.value,
df=nrow(home_df)-1,
lower.tail=T)*2
## [1] 0.03969288
- 兩獨立樣本t檢驗
兩樣本含量較小(n1≤60,或(和)n2≤60)阵幸,且各自的總體符合正態(tài)分布正態(tài)分布檢驗時花履,再根據(jù)兩組數(shù)據(jù)的方差是否一樣(方差齊性檢驗)來采用不同t檢驗方法。
- 方差齊性檢驗
- 使用var.test(x挚赊,y)進行方差齊性檢驗
- α值一般為0.1
4.1 方差齊性時
#讀取數(shù)據(jù)
bfg_sav<-spss.system.file("ExampleData/SavData4MedSta/Exam03-07.sav")
#將數(shù)據(jù)形式轉(zhuǎn)換為數(shù)據(jù)框
bfg_df<-as.data.frame(as.data.set(bfg_sav))
x <- bfg_df$result[which(bfg_df$group==1)]#group為1的數(shù)據(jù)
y <- bfg_df$result[which(bfg_df$group==2)]
#直接使用t.test()進行計算诡壁,注意 var.equal=TRUE
t.test(x,y,var.equal=TRUE)
4.2 方差不齊時
t.teet()中用的是Welch法
而R中還未找到可以實現(xiàn)Cochran&Cox法 和 Satterthwaite法 的函數(shù),但是可以通過自己敲代碼實現(xiàn)荠割。如下
cochran's t法
#Cochran&Cox法的檢驗統(tǒng)計量*t'*的
cochran_test<-function(x, y) {
#計算均值妹卿,方差,個案數(shù)
mean_x<- mean(x)
mean_y<- mean(y)
dev_x<-var(x)
dev_y<-var(y)
nx<-length(x)
ny<-length(y)
#計算t'值
t_value <- (mean_x-mean_y)/sqrt(dev_x/nx+dev_y/ny)
#計算P值
p_value <- pt(cochran_t,df=nx-1,lower.tail=F)*2
#合成列表與命名
op<-list(t_value, p_value)
names(op) <- c("cochran' t", "p")
return(op)
}
satterhwaite法來矯正cochran法的自由度
#Satterthwaite法來矯正Cochran&Cox法的檢驗統(tǒng)計量*t'*的自由度
sattw_df<-function(x, y){
dev_x<-var(x)
dev_y<-var(y)
nx<-length(x)
ny<-length(y)
satt_df<-(dev_x/nx+dev_y/ny)^2/
(((dev_x/nx)^2/(nx-1))+
((dev_y/ny)^2/(ny-1)))
return(satt_df)
}
satt_df<-sattw_df(stdev_x,stdev_y,nx,ny)
#這里注意的是cochran_t>0蔑鹦,我們要計算cochran_t相關(guān)的雙側(cè)拒絕域面積夺克,需要指定 lower.tail=F,并加倍
pt(cochran_t,satt_df,lower.tail=F)*2
#[1] 0.3427644
3.4 變量轉(zhuǎn)換
常用的變量變換有:
- 對數(shù)變換(Logarithm)
- 平方根變換(Square root)
- 平方根反正弦變換(Arcsine, Arcsine-square)
- 倒數(shù)變換(Reciprocal)
- 指數(shù)變換(Exponential)
例子:
#install.packages("openintro","e1071","pryr")
#使用mammals數(shù)據(jù)集測試
library(openintro)
#e1071包中的skewness()計算偏斜度
library(e1071)
#使用pryr包中的繪圖對象保存方案
library(pryr)
library("dplyr")
skewness(mammals$body_wt)
#使用log()對body_wt數(shù)據(jù)進行轉(zhuǎn)換
loged_bd_wt <- log(mammals$body_wt)
#skewness()計算偏斜度
skewness(loged_bd_wt)
##[1] 0.1453599
p1.pryr %<a-% {
hist(mammals$body_wt,breaks = 200,freq=FALSE,
xlim=c(min(mammals$body_wt),max(mammals$body_wt)),main="Bodt wt. 數(shù)據(jù)分布")
lines(density(mammals$body_wt), col="red", lwd=1)
}
p2.pryr %<a-% {
hist(loged_bd_wt,breaks = 200,freq=FALSE,
xlim=c(min(loged_bd_wt),max(loged_bd_wt)),main="經(jīng)過Log轉(zhuǎn)換后Bodt wt. 數(shù)據(jù)分布")
lines(density(loged_bd_wt), col="red", lwd=1)
}
split.screen(c(1, 2))
screen(1)
p1.pryr
screen(2)
p2.pryr
下面是兩組樣本數(shù)據(jù)的對數(shù)轉(zhuǎn)換示例嚎朽,在mammalsbrain_wt數(shù)據(jù):
#使用log()對brain_wt數(shù)據(jù)進行轉(zhuǎn)換
loged_br_wt <- log(mammals$brain_wt)
p3.pryr %<a-% {
plot(mammals$body_wt,mammals$brain_wt,main="body_wt vs brain_wt",col="red",pch=16)
}
p4.pryr %<a-% {
plot(loged_bd_wt,loged_br_wt,main="body_wt vs brain_wt after both loged",col="red",pch=16)
}
split.screen(c(1, 2))
screen(1)
p3.pryr
screen(2)
p4.pryr
第四章 多個樣本均數(shù)比較的方差分析
4.1 F分布
4.2 F檢驗的分類铺纽、原理及應用
- 分類
按方差分析的基本運算概念,依照所感興趣的因子數(shù)量而可分三大類:
- 單因子方差分析(One-way ANOVA)
- 雙因子方差分析(Two-way ANOVA)
- 多因子方差分析(Multi-way ANOVA)
如果依照因子的特性不同而有三種型態(tài)哟忍,分別是:
- 固定效應方差分析(Fixed-effect ANOVA)
- 隨機效應方差分析(Random-effect ANOVA)
- 混合效應方差分析(Mixed-effect ANOVA)
一般的狡门,按照因子數(shù)量的分類進行區(qū)分使用情況比較常見,這里借用單因素方差分析(One-way ANOVA)介紹方差分析的基本思想锅很。
- 原理
關(guān)于方差分析的原理其馏,可以參考舒華<教育與心理研究中的多因素實驗設計>一書。這里不再贅述
順便說一句,這書還沒有看完……柑!