知識(shí)清單:
- t分布(t-distribution)
- 自由度(degree of freedom讥脐,df)
- 單樣本t檢驗(yàn)(one sample/group t-test)
- 配對樣本t檢驗(yàn)(paired/matched t-test)
- 兩樣本t檢驗(yàn)(two-sample/group t-test)
- 正態(tài)性檢驗(yàn)(normality test)
- 方差齊性檢驗(yàn)(homogeneity of variance test)
- 變量變換效果展示
1. t分布(不同自由度)
了解r語言幾個(gè)函數(shù):dt,pt刽辙,qt,rt分別與dnorm舶赔,rnorm扫倡,pnorm,qnorm和rnorm對應(yīng)
- dt() 的返回值是正態(tài)分布概率密度函數(shù)(density)
- pt()返回值是正態(tài)分布的分布函數(shù)(probability)
- 函數(shù)qt()的返回值是給定概率p后的下百分位數(shù)(quantitle)
- rt()的返回值是n個(gè)正態(tài)分布隨機(jī)數(shù)構(gòu)成的向量
x <- seq(-4, 4, length=200)
df <- c(2, 10, 30, 40, 60, 90)
require(plyr)
get.pt <- function(x, df) {
prob <- dt(x, df)
dd <- data.frame(x=x, df=df, prob=prob)
return(dd)
}
pt.df <- mdply(data.frame(x= rep(x, length(df)), df=rep(df, each=length(x))), get.pt)
require(ggplot2)
ggplot(pt.df, aes(x, prob))+geom_line(aes(group=df, color=factor(df)), lwd=1)+geom_line(data=data.frame(x=x, prob=dnorm(x)), alpha=0.3, lwd=3, color="gray")
2. 單樣本t檢驗(yàn)(使用教材光盤血紅蛋白數(shù)據(jù): 例03-05.sav)
前提條件:取自正態(tài)分布的小樣本(<=60, 偏態(tài)用秩和檢驗(yàn))撵溃;或者取自任意分布的大樣本(>60)
# install.packages("memisc")
library(memisc)
hb_df <- data.frame(as.data.set(spss.system.file('E:\\醫(yī)學(xué)統(tǒng)計(jì)學(xué)光盤文件\\SPSS文件_醫(yī)學(xué)統(tǒng)計(jì)學(xué)(第4版)\\各章例題SPSS數(shù)據(jù)文件\\例03-05.sav')))
t.test(hb_df$hb, mu=140)
One Sample t-test
data: hb_df$hb
t = -2.1367, df = 35, p-value = 0.03969
alternative hypothesis: true mean is not equal to 140
95 percent confidence interval:
122.1238 139.5428
sample estimates:
mean of x
130.8333
除此之外疚鲤,還可以直接計(jì)算出t值后,使用pt函數(shù)計(jì)算p值
t.value <- abs((mean(hb_df$hb) - 140) / sd(hb_df$hb) * sqrt(nrow(hb_df)))
p.value <- pt(t.value, df=nrow(hb_df)-1, lower.tail=FALSE)*2
可視化:
x=seq(-4, 4, length=500)
d <- data.frame(x=x, prob=dt(x, df=length(hb_df$hb)-1))
require(ggplot2)
ggplot(d, aes(x, prob, fill=((x>-t.value & x<t.value))))+geom_area()+scale_fill_manual(values=c("TRUE"="steelblue", "FALSE"="red"))+theme(legend.position="none")+geom_text(aes(0, dnorm(0)+0.02), label=paste("p = ", round(p.value, 4), sep=""))
3. 配對樣本t檢驗(yàn)(paired/matched t-test)教材光盤數(shù)據(jù):例03-06.sav
前提條件:配對設(shè)計(jì)(同質(zhì)對子接受兩種不同處理缘挑;同一樣品接受不同處理集歇;同一對象接受處理前后)
- 方法 1:
# install.packages("memisc")
library(memisc)
paired_df <- data.frame(as.data.set(spss.system.file('E:\\醫(yī)學(xué)統(tǒng)計(jì)學(xué)光盤文件\\SPSS文件_醫(yī)學(xué)統(tǒng)計(jì)學(xué)(第4版)\\各章例題SPSS數(shù)據(jù)文件\\例03-06.sav')))
t.test(paired_df$x1, paired_df$x2, paired=TRUE)
- 方法 2:
d <- (paired_df$x1-paired_df$x2)
t.value <- abs(mean(d)/sd(d)*sqrt(length(d)))
p.value <- pt(t.value, df=length(d)-1, lower.tail=FALSE)*2
4. 兩樣本t檢驗(yàn)(成組t檢驗(yàn)Two Sample t-test)教材光盤數(shù)據(jù):例03-07.sav
前提條件:小樣本,需要方差齊性和來自正態(tài)總體(方差不齊需用近似t檢驗(yàn))语淘;或者大樣本(>60)
- 方法 1:
# install.packages("memisc")
library(memisc)
group_df <- data.frame(as.data.set(spss.system.file('E:\\醫(yī)學(xué)統(tǒng)計(jì)學(xué)光盤文件\\SPSS文件_醫(yī)學(xué)統(tǒng)計(jì)學(xué)(第4版)\\各章例題SPSS數(shù)據(jù)文件\\例03-07.sav')))
t.test(group_df$x[group_df$group=="阿卡波糖膠囊"], group_df$x[group_df$group=="拜唐蘋膠囊"], paired=FALSE)
- 方法 2:
library(plyr)
group_dd <- ddply(group_df, .(group), function(x) data.frame(SD=sd(x$x), n=length(x$x), mean=mean(x$x)))
diff_se <- sqrt(sum(group_dd$SD^2*(group_dd$n-1))/sum(group_dd$n-1)*sum(1/group_dd$n))
t.value <- abs((group_dd$mean[1]-group_dd$mean[2])/diff_se)
p.value <- pt(t.value, df=sum(group_dd$n)-2, lower.tail=FALSE)*2
5. 正態(tài)性檢驗(yàn)
一般不必要使用诲宇,多用于采用正態(tài)分布法制定參考值范圍時(shí)
6. 方差齊性的F檢驗(yàn),教材光盤數(shù)據(jù):例03-06.sav
F檢驗(yàn)理論上需要滿足資料服從正態(tài)分布惶翻,進(jìn)行方差齊性檢驗(yàn)更多采用另一種不依賴總體分布形式的Lecene檢驗(yàn)
進(jìn)行f和t一樣姑蓝,r語言有df,pf吕粗,qf纺荧,rf和var.test等函數(shù)
- 方法 1:
# install.packages("memisc")
library(memisc)
group_df <- data.frame(as.data.set(spss.system.file('E:\\醫(yī)學(xué)統(tǒng)計(jì)學(xué)光盤文件\\SPSS文件_醫(yī)學(xué)統(tǒng)計(jì)學(xué)(第4版)\\各章例題SPSS數(shù)據(jù)文件\\例03-07.sav')))
var.test(group_df$x[group_df$group=="阿卡波糖膠囊"], group_df$x[group_df$group=="拜唐蘋膠囊"])
- 方法 2:
f.val <- sd(group_df$x[group_df$group=="阿卡波糖膠囊"])^2/var(group_df$x[group_df$group == "拜唐蘋膠囊"])
p.val <- pf(f.val, df1=19, df2=19, lower.tail=FALSE)*2
7. 變量變換
對數(shù)變換:數(shù)據(jù)效應(yīng)為相乘,變異系數(shù)接近常數(shù)
b <- rnorm(100)
prob <- dnorm(b)
a <- exp(b)
data <- data.frame(variable=c(a, b), c= rep(c("exp", "normal"), each=length(a)), prob=c(prob, prob))
CairoPNG(1400, 1000, file="myplot.png", dpi=300)
ggplot(data, aes(v, prob, color=c))+geom_line(lwd=1)
dev.off()
cvs <- c()
for (i in 1:1000) {cvs <- c(cvs, (raster::cv(sample(a, 79))))}
hist(cvs, breaks=100)
- 平方根變換:適用于Poisson分布資料颅筋,方差與均數(shù)近似相等宙暇,輕度偏態(tài)(如發(fā)病的地域或時(shí)間分布)
- 反正弦變換:率或百分比的數(shù)據(jù)
- 倒數(shù)變換:兩端波動(dòng)大的數(shù)據(jù)
參考:
[1] 孫振球 徐勇勇. 醫(yī)學(xué)統(tǒng)計(jì)學(xué)【第四版】
[2] https://guangchuangyu.github.io/statistics_notes/section-4.html#section-4.1