【R-statistics】基本统计量、假设检验和置信区间

写在前面
温习一下用R做基本统计的过程。

summary(cars)
plot(pressure)

======================================
绪论:
概率?统计?
世界是随机的
模型 --概率--> 数据
数据 --统计--> 模型

常见概率模型

离散型:
binom:二项分布
geom:几何分布
hyper:超几何分布
nbinom:负二项分布
pois:泊松分布

连续型:
norm:正态分布
unif:均匀分布
exp:指数分布
gamma:伽马分布
beta:贝塔分布
t:t分布
f:F分布
chisq:卡方分布

R语言中的四种前缀

d:概率密度函数f
p:概率分布函数F
q:分位数F^(-1)
r: 随机数

一些例子

#扔100次硬币,恰好出现50次的概率
#dbinom(x, size, prob, log = FALSE)
dbinom(50,100,0.5)
pbinom(50,100,0.5)
pbinom(40,100,0.5)
qnorm(0.05)
qnorm(0.025)
#均匀分布的随机数
runif(10,0.1)

多元正态

library(mvtnorm)
mu <- c(1,-1)
sig <- matrix(c(1,0.5,0.5,1),2,2)
x <- rmvnorm(100,mu,sig)
x[1:10,]
plot(x=x[,1],y=x[,2])

常见统计量

均值;方差;标准差;中位数;四分位数

data("mtcars")
attach(mtcars) #如果存在多个数据集的时候,用attach()可能会造成误解;
mean(wt)      #此时应用$来代替attach()。
var(wt)
sd(wt)
median(wt) #中位数对极端值不敏感
quantile(wt,0.25)
#自定义分位数
quantile(wt,c(0.1,0.25,0.5,0.75,0.9))

次序统计量

min(wt)
max(wt)
#排序,默认由小到大
wtinc <- sort(wt)
wtinc[1:10]
#设置“decreasing = T”,变成从大到小排列
wtdec <- sort(wt,decreasing = T)
wtdec[1:10]

summary(wt)
table(vs)

多元数据

#2是按列,1是按行
apply(mtcars,MARGIN = 2,mean)
apply(mtcars,MARGIN = 2,var)
#协方差矩阵
C <- cov(mtcars)
C
##相关性系数
cr <- cor(mtcars)
cr

======================================

假设检验和区间估计

summary(cars)
plot(pressure)

常用统计函数

常见假设检验和区间估计

两个几乎对应的概念
假设检验:用p值衡量数据与关于参数的原假设的差异程度。
区间估计:基于数据推断对应参数的一个可能区间。
如果区间包含对应原假设值 ---》接受原假设
如果区间不包含对应原假设值 ---》拒绝原假设
某种意义上来说区间估计的信息更多或更直接
但有些时候假设检验对应的区间估计难以得到或不存在。

均值检验:t test

单样本

data("mtcars")
attach(mtcars)
t.test(wt,mu=3) #默认是双尾检验
t.test(wt,mu=3,alternative = "greater") #指定为单尾检验
双尾检验.png
单尾检验.png

注:
1.理论上来说,t检验依赖于正态性建设
2.但由于中心极限,大样本也可以用
3.但多大是大呢?30?skewness!通过斜度来纠正

双样本数据

做t.test一般不考虑variance.equal=T

wt_am <- wt[am==0]
wt_mn <- wt[am==1]
t.test(wt_am,wt_mn)
#方差相同时的假设,power可能更高;更高更好;但一般不推荐
t.test(wt_am,wt_mn,var.equal = T)
image.png

sample size determination based on power fuction

功效函数:给定真实参数值和样本量,假设被拒绝的概率
由此反推,如果给定真实参数值和期望的假设被拒绝的概率,样本需要多少?

power.t.test(n=32,delta = abs(3.5 - 3),sd=sd(wt), sig.level = 0.05,power = NULL,type = "one.sample",alternative = "one.sided")

如果是双样本,标准差建议使用双样本标准差的平方平均

power.t.test(n=NULL,delta = abs(1 - 0),sd=sqrt(var(wt_am)+var(wt_mn)), sig.level = 0.05,power = 0.9,type = "two.sample",alternative = "two.sided")

配对t检验

为了提高功效,在实验条件允许的情况下,我们可以采集配对数据,每对数据其他协变量相近(统计变量法的统计版)
此时不应该使用之前的t test(over conservative,会造成更高的p值)
因为两组样本之间存在强相关性,从而带来更高的precison and power
试验设计优先。

x <- c(113,120,138,120,100,118,138,123)
y <- c(138,116,125,136,110,132,130,110)
cor(x,y)
t.test(x,y,paired = T)
t.test(x,y)
Paired T test.png

方差检验:F test

检验两组样本的方差是否相同

var.test(wt_am,wt_mn)
方差齐性检验.png

注:
1.这个检验基于正态性假设且及其敏感(如何检查正态性)

相关性检验

由试验设计决定

cor.test(x,y)

正态性检验

  • 正态w检验法 shapiro-wilk
  • qqplot
shapiro.test(wt)
qqnorm(wt)
qqline(wt)
shapiro.test.png
qqnorm.png

用随机数的例子

shapiro.test(runif(100))

注:
1.检验和qq plot都很重要;后者更直观
2.还有一些非参的方法(KS,Peason),但就正态性这一问题来说,S-W的power更大。

Pearson卡方检验

单变量

(默认是)检验概率是否均匀

x <- c(210,312,170,85,223)
chisq.test(x)

注:
1.也可以设置成给定的非均匀概率
2.本质是刻画观测数据与期望数据的差距。

双变量(列连表)

检验两个变量是否独立。

x <- matrix(c(60,3,32,11),2,2)
x
chisq.test(x)

注:
1.本质是通过边际概率+独立性假设计算联合概率,进而计算期望频数并与数据比较
2.检验仅能说明存在相关性而非因果性
3.若想获得因果性,需要修改的并非是检验,而是试验设计(随机化!)
4.如果某一个单元格的期望频数小于5,则检验不可靠,R会给出warning。

针对期望频数小于5的列联表
Fisher.test

x <- matrix(c(4,5,18,6),2,2)
x
chisq.test(x)
fisher.test(x)

注:
1.通过考虑所有的排列组合去刻画概率(Lady tasting tea),因此是exact
2.在因果推断是一个重要的检验
3.可能会出现样本数量过大而无法考察所有的组合情况,此时需要Monte Carlo方法近似

参考链接:
1.https://space.bilibili.com/40285258/?spm_id_from=333.999.0.0
2.白话统计学
3.南方科大生物统计-https://www.bilibili.com/video/BV1Sf4y1N76S?p=10&spm_id_from=pageDriver

你可能感兴趣的:(【R-statistics】基本统计量、假设检验和置信区间)