31. 单样本t检验:help(t.test)
单样本T检验是检验某个样本和一个给定均数的差别。
例如,单侧检验看某样本的年龄均数是否大于8。那么无效假设为 mu<8,备择假设为mu≥8,置信区间为95%,则命令为:
t.test(Age,mu=8,alternative="less",conf.level=0.95)
可简写为t.test(Age,mu=8,alt="less",conf=0.95)
如果无效假设是mu>8,则命令里less 改为larger。
双侧检验则命令里less改为two.sided,或者去掉alt这个分句因为R默认为双侧检验,结果应该是一致的。
可将T检验的结果另存为一个新的变量。TEST <- t.test(Age, mu=8,conf=0.99),然后再从中只提取P值进行制表等操作。
32.两独立样本t检验:
建议在统计之前作图观察两样本的差别。
例如,双侧检验看男女的眼轴长度AL_od是否不同。无效假设是mu=0,备择假设为差异不等于0,置信区间95%,两组的变异度不等,非配对样本,则命令为:
t.test(AL_od~sex,mu=0,alt="two.sided",conf=0.95,var.eq=F, paired=F)
或t.test(AL_od[sex=="female"], AL_od[sex=="male"])
那么如何评估变异度一致性即var.eq呢?可以看boxplot,或两组分别计算变异度:var(AL_od[sex==“male”]),
或者采用levene's test,其无效假设是两组的变异度是一致的。要用这个命令,首先得安装car packages.
install.packages("car")
library(car)
leveneTest(AL_od~sex)
如果P值小于0.05则说明两组的变异度不同。
33. Mann-Whitney U test: 两样本秩和检验:help(wilcox.test)
wilcox.test(AL_od~sex, mu=0, alt="two.sided",conf.int=T, conf=0.95, paired=F,,exact=T,correct=T)
//零假设是差异为0,双侧检验,置信区间为95%,非配对样本,计算确切P值和CI,校正连续值。
34. 配对样本t检验:
例如,看治疗前后的血压有无差异,零假设是无差异,双侧检验
t.test(Before, After, mu=0, alt="two.sided", paired=T,conf.level=0.99)
35. Wilconxon Signed Rank Test: help(wilcox.test)
两样本中位数的非参数检验,同样的先画箱型图对比。零假设是两组中位数差别为0,双侧检验
wilcox.test(Before, After, mu=0, alt="two.sided", paired=T,conf.int=T, conf.level=0.90, exact=F, correct=F)
35. ANOVA: 比较2组或以上的均数 help(aov)
boxplot(weight~diet), 零假设是所有饮食类型的体重相同。
ANOVA1 <- aov(weight~diet)
Kruskal Wallis是一个one-way变异度分析,是ANOVA的非参数形式。
kruskal.test(weight~diet)
36. 卡方检验和fisher's确切概率法:help(chisq.test)
先建立一个table看下两个变量的分布: TAB <- table(gender, smoking)
画图对比: barplot(TAB,beside=T, legend=T)
chisq.test(TAB, correct=T)
fisher.test(TAB, conf.int=T, conf.level=0.95)
37. RR,OR, attributes of risk: direction and strength of the association between two categorical variables.
TAB <- table(gender, smoking)
barplot(TAB,beside=T, legend=T)
需要先安装一个packages: install.packages("epiR")
library (epiR)
help(packages="epiR")
假设是一个2x2的表格,epi.2by2(TAB, method="cohort.count", conf.level=0.95)可给出RR,OR值和95%CI。
38. correlation and linear regression:
先画散点图,如评估年龄和身高之间的关系:plot(age, height)
cor(age, height, method="pearson") // pearson是R的默认设置,也可不写,或用spearman, kendall
cor.test(age, height, method="pearson") //零假设是相关系数为0
相关系数矩阵: pairs(data1) 或pairs(data1[, 1:3]) //所有行,1-3列,其实就是1-3个变量的矩阵图
cor(data1[, 1:3]) //相关系数矩阵的数值表格
cov(age, height) //age和height的相关系数
39. Simple linear regression:
先画散点图和计算相关系数(同上)
mod <- lm(height ~age) //生成一个新变量,这里命名为mod,lm括号里面先写Y后写X
summary(mod) //可以看到回归结果
可以进一步对该回归结果进行读取和更改,例如confint(mod,level=0.99)可以看到99%置信区间
coef(mod) 可以读取回归系数, anova(mod)可以看到回归表格
40. checking linear regression assumptions:
plot(age, height)之后同上生成mod,
abline(mod) //在散点图上添加一条age和height的回归拟合曲线
plot(mod) //可以看到评估回归的四个图,点击return键可以跳转查看
如果想同时显示四张图,则先分开屏幕,再画图
par(mfrow=c(2,2))
plot(mod)
par(mfrwo=c(1,1)) //回到原屏幕设置
41. multiple linear regression:
看身高与年龄和性别之间的关系:model1<- lm(height~age+sex)
summary(model1)
cor(age, sex,method="pearson") //衡量自变量间的交互作用
confint(model1, conf.level=0.95)
plot(model1)
42. 数值型变量转成类别型变量:?cut
例如分年龄组:agegroup=cut(Age,breaks=c(0,20,40,100),labels = c("A","B","C")) //默认区间是左开右闭,0和100是下限和上限
如果想左闭右开的话,加入一个命令right=FALSE。
agegroup=cut(Age,breaks=3,labels = c("A","B","C"), right=F) //让R自己选择cut-off分为3组
43. 哑变量:k个分类的变量需要k-1个哑变量
如上agegroup是一个分类变量,mod<- lm(height~agegroup) //R会自动让分类变量生成哑变量,以第一个变量为reference
summary(mod)
如果要改变reference category的话,help(relevel)
mod1<- lm(height~age+sex) //其中sex是分类变量,参照是female
summary(mod1)
table(sex) //假设看到的目前reference即第一列是female,如果想变成male
gender<- relevel(sex,ref="male")
table(gender) //此时refrence变成了male
此时再mod2<-lm(height~age+gender) //此时的性别参照就是male
44. R数据库合并
mm <- merge(data1,data2, all=T, by=c("v1")) //data1和data2这两个数据库通过v1这个变量merge到一起,生成新数据库mm