Jimmy那些事儿

统计学_分析方法

1. 相关性

  • What:显示两个随机变量之间线性关系的强度和方向;
    • Pearson相关系数
    • Spearman相关系数:衡量两个有序尺度变数的相关性;
    • Kendall等级相关系数:衡量两个人为认定的有序尺度变数的相关性
    • Kappa一致性系数:衡量两个类别尺度变数的相关性;
  • Why :用来衡量两个变量相对于其相互独立的距离;

1.1 相关系数

R - cor()

cor(data, use="everything", method="pearson")

use,表示对缺失值的处理方式,

  • everything - 结果为missing
  • all.obs - 报错
  • complete.obs - 行删除
  • pairwise.complete.obs - 成对删除

method = “spearman” / “kendall”

组与组之间的相关系数

1
2
3
x <- data[, c("var1","var2")]
y <- data[, c("var3","var4","var5")]
cor(x,y)

1.2 协方差

R - cov()

cov(data)

1.3 偏相关

  • What:控制一个或多个变量时,另外两个定量变量之间的相互关系
  • Why :控制其他变量,单独研究某两个变量之间的关系

R - ggm包 - pcor()

pcor(data[,c(1,5,2,3,4)], cov(states))

u,一个数值向,前两个数值表示要研究的两个变量,其余的数值表示要排除影响的条件变量

S 对应的协方差矩阵,同时也表明了对应的数据

pcor(u, S)


2. 均值的假设检验

2.1 t 检验

  • What: 一种用于小样本(样本容量<30)的两个平均值差异程度的检验方法;
  • Why : 通过 t 理论来推断差异发生的概率,从而判断两个平均数的差异是否显著(μ~1~ - μ~2~= 0)
  • How : 适用条件
    • 正态分布(常用于标准差σ未知)
    • 样本独立随机


2.1.1 单样本 t 检验

  • Why1 : 用于比较 抽样样本所代表的未知的总体均值μ已知的总体均值μ~0~ 或 指定值的差异程度;

  • Why2 : 用于计算 可能的总体均值的范围(估计置信区间);

    R 语言 -t.test(y, [conf.levle=0.95])

    Excel - 描述统计量 - 根据( 均值 ± 置信度 )来确定

2.1.2 双样本 t 检验

  • What :针对两个独立的样本;
  • Why1 : 确定两个独立组均值是否存在差异(μ~1~ - μ~2~= 0)
  • Why2 : 计算两个总体均值之间的差值的范围

R - t.test(x1, x2, alternative="two.side", var.euqal=F)

alternative 可选 less; greater;

var.equal = F 默认两方差不相等; var.equal = T ,等方差 t 检验

2.1.3 双样本配对 t 检验

  • What:针对两个不独立的样本
  • Why1 : 确定两个配对样本之差的均值不等于0(或目标值)(μ~1~ - μ~2~= 0);
  • Why2 : 计算可能包含差异总体均值的范围;

R -

t.test(x1, x2, alternative="", paired=T , var.equal = F) x1, x2 为已经分组的两个数值型向量

t.test(x~y, data= ) x为一个数值型变量,y为一个二分变量(分组变量);即此时数据框的格式为长格式,所有的数据y在一列中

paired = T ,表示配对; 默认为F

Excel - t检验:平均值的成对二样本分析


2.2. z 检验

  • What: 一种用于大样本的两个平均值差异程度的检验方法;
  • Why : 通过 Z 理论来推断差异发生的概率,从而判断两个平均数的差异是否显著(μ~1~ - μ~2~= 0)
  • How : 适用条件 - 正态分发(常用于标准差σ未知)


3. F 检验

  • What:方差齐性检验;通过比较两个数据的方差,来确定它们的精密度是否有差异性检验;
  • Why :检查两个样本的方差是否有显著差异;通过F检验来确定选择何种 t 检验(等方差双样本、异方差双样本)以及确定方差检验ANOVA条件中的等方差性


5. 方差分析

  • What:基于使用方差来确定均值是否存在误差的一种方式;ANOVA
    • 通过将 组均值之间的方差(SST)组内方差(SSE) 进行比较来确定这些组都是一个更大总体的一部分还是分属具有不同特征的单独总体;
    • 组间因子:一个自变量,把每个观测值分配到对应的一个组别中,一个观测值只能属于一个组别;常称为单因素方差分析例如:把治疗方案分为方案1,方案2,把每个观测值随机抽取放到方案中;
    • 组内因子:一个自变量,不对观测值进行划分,而对所有观测值重复测量不同水平下的情况;常称为重复测量方差分析或组内方差分析例如,把时间分为1个月,3个月,所有的观测值都要观察这两个时间维度下的情况;
      • SST :组间均值之间的差异性;对每个组的均值与所有样本观测值的总体均值之间距离的平方,乘以该组内观观测值的数量,最后把所在的结果加总;Sum of Squares for Treatments;
      • SSE :组内均值之间的差异性;对每个响应观测值和自身所处组的均值之间距离的平方进行加总,然后对所有观测值的奖惩的平方求和;Sum of Squares for error;
  • Why :检验两个或多个总体均值相等的这一假设;通过比较不同因子水平下的响应变量均值来评估一个或多个因子的重要性;
    • 因子水平:指的是不同的自变量;
      • 例如,球杆(一个因子水平),球(一个因子水平),击球人(一个因子水平)
      • 因子水平可以有不同的取值;球杆(木球杆,铁球杆)
  • How :试验条件
    • 样本独立随机
    • 近似正态分布(稍有偏离也并不影响F检验的结果)
    • 等方差性(敏感)
方差分析类型 模型和设计属性
单因子 一个固定因子(由调查员设置水平),每个处理可具有不等(不平衡)或相等(平衡)的观测值数。
平衡 模型可包含任意数量的固定和随机因子(水平是随机选择的),以及交叉和嵌套因子,但要求平衡设计。
一般线性模型 通过允许不平衡设计和协变量(连续变量)来扩展平衡方差分析。


5.1 单因素方差分析

  • What:针对只有一个因变量的方差分析,并且观测值被分到不同的组别中的设计实验;该变量因子也称为组间因子

R - aov()

fit <- aov(y~x) y为数值型因变量,x为类别型组间因子,且必须为因子格式 data$var <- factor(data$var)

summary(fit)

Excel - 方差分析-单因素方差分析

分组方式: 行/列; 即 组间因子

标志:指的是自变量

5.2 随机区组方差分析

  • What:引入区组均值
    • 区组均值:区组中的平均值
    • SSB:每个区组均值 与 所有样本观测值的总体均值 之间的差异的平方求,再乘以每个区组内观测值的个数,最后加总; Sum of Squares for Blocks;
  • Why :减少每个区组内试验单元的抽样变异性,降低误差值;

5.3 双因素方差分析

  • What:有两个自变量,观测值被分配到两个变量的交叉类别组中的方差分析;例如自变量A有a个水平,自变量B个b个水平,存在一个ab个可能的处理;

    • 主效应:判断各因素对因变量的影响;
    • 交互效应:判断因素的组合对因变量的影响;
  • How : 分析

    1. 若拒绝原假设,得出两个均值不同的结论;

    2. 查看交互效应

      2.1 若拒绝交互效应的原假设,得出两个变量之间有交互影响

      ​ 2.2.1 比较组间均值的配对

      2.2 若无法拒绝,说明两个变量之间没有交互影响

      ​ 2.2.1 分别查看变量A 、变量B 单独对因变量的影响,

      ​ 2.2.2 使用多重比较来比较均值的配对,得出哪个变量对均值的影响大

R - aov()

fit <- aov(y ~ x1*x2, data= ) y为因变量,x1,x2 均需为因子,故x1,x2 都被当做 组间因子来对待factor(x1),而非协变量;

summary(fit)

Excel - 方差分析:无重复双因素方差分析

5.4 双因素重复测量方差分析

  • What:观测值不是被分配到不同的组中,而是针对同一个自变量的多个不同水平重复测量;常为一个 组间因子 + 一个组内因子 的设计试验;

R - aov()

fit <- aov(y~x1*x2+ Error(对象列/x2), data= )

Error(Subject/x2) 表示x2为组内因子; 对象列,表示用以代表重复的标记列

summary(fit)

R处理重复测量时,需先将数据格式转为长格式

library(reshape)

melt(data,id=”var1”, measure=”var2,var3”) id用于确定基准列,measure用于确定哪些变量组合进id列,若缺失则代表所有变量

Excel - 方差分析:重复双因素方差分析

每一样本的行数:表示重复测量值所在的行数(若为3,表示第4行为其他区组的观测值)

5.5 稳健的方差分析

  • Why :当方差分析的前提假设无法满足时,或者担心过多的离群点,可以用稳健或非参数的MANOVA检验

R -

5.x 均值的多重比较

  • Why :在发现均值不等的前提下,得出各个均值的排序大小;

R - rrcov包 - Wilks.test()

得出各组均值的大小 - 可视化(gplots包)- plotmeans()

1
2
3
> library(gplots)
> plotmeans(y~x)
>

>

得出各组均值的大小 + 两组均值差异的显著情况

  • Tukey HSD成对检验
  • TukeyHSD()
    1
    2
    3
    4
    5
    > TukeyHSD(fit) #观察p值,若p<0.05,说明这两个组均值之间存在差异
    > par(las=2) #横纵坐标轴转换
    > par(mar=c(5,8,4,2)) #增加左侧的边界
    > plot(TukeyHSD(fit)) #可视化
    >
  • 可视化(multcomp包)
1
2
3
4
5
6
7
8
9
> library(multcomp)
> par(mar=c(5,4,6,2)) #默认为(5,4,4,2) 增大顶部边界面具
> tuk <- glht(fit, linfct = mcp(trt='Tukey')) #trt,组间因子
> plot(cld(tuk, level=0.05), col="lightgrey")
>
> 图形解读:
> 2. 各均值大小的分布图
> 2. 有相同的字母,说明均值差异不显著
>

>


6. 确定统计量


7. 回归分析

Regression Analysis

  • What:一个建立自变量与因变量之间的关系模型;一个或多个自变量来预测因变量的方法;
  • Why :
    • 描述两者相关性,它们相关的强度与方向;
    • 挑选与因变量相关的自变量
    • 生成一个等式,用来预测因变量
  • How :一般形式为 y = f(x,ε),结果解释
    • Intercept:截距
    • Estimate/Cofficients:系数
    • St.Error标准误:抽样分布的标准误差,说明抽样的离散情况;
    • p值:回归分析会进行统计检验以针对每个自变量的关联系数计算出一个称为 p 的概率值;零假设为:系数与零之间无显著差异(在所有情况下,该系数均零,因此,关联的解释变量对于模型不起任何作用)
    • 决定系数$R^2$或 Adj $R^2$:给出了模型对于原数据的解释程度;越接近1,说明模型拟合越好;
      • Adj $R^2$,调整的多元判定系数,不会因为变量数目的增加而趋向于1;在多元分析中,若使用$R^2$必须确保样本变量数量 > 模型参数个数;并且$R^2$会随着模型个数的增加而增加,也就是说即使模型对预测y不能提供任何作用,也能迫使$R^2$增加到1;
    • Residual残差:表示模型无法解释的部分(指的是实际值与模型预测值的差),表示为随机误差项;可以用于确定模型的拟合程度;残差越小,说明拟合越好;
回归方程 自变量 因变量
简单线性回归 一个(定量) 一个(定量)
多项式回归 一个(定量),n阶 一个(定量)
多元线性回归 两个及以上(定量) 一个(定量)
Logistic回归 一个或多个 一个(二值型类别)


7.1 简单线性回归

  • What:一个量化的自变量预测一个量化的因变量;

  • Why :判断两个变量之间相关的强度和方向;

R - lm()

1
2
3
4
5
6
fit <- lm(y~x, data=) #formula y ~ x1+x2+...x4
summary(fit)
fitted(fit) #fitted() 返回拟合模型的预测值
residuals(fit) # 返回残差值(即 实际值 - 模型预测值)
plot(data$x, data$y)
abline(fit) #模型可视化

Excel - 回归

7.2 多项式回归

  • What:一个量化的自变量解释一个量化的因变量,模块的观察是n阶多项式

R - lm()

1
2
3
4
fit <- lm(y ~ x + I(x^2), data= ) I(),表示以算术的角度来解释括号中的元素
summary(fit) #查看是否有不显著的变量(p>0.05)
plot(data$x, data$y)
lines(x, fitted(fit)) #fitted() 返回拟合模型的预测值

7.3 多元线性回归

  • What:两个或多个量化的自变量预测一个量化的因变量;当自变量个数大于等于2个;
  • How :结果解释
    • 回归系数的含义为:当一个自变量增加一个单位,其他自变量保持不变时,因变量增加的数量;

R - lm()

1
2
fit <- lm(y ~ x1 +x2 + x3 + ..., data= )
summary(fit)

7.4 有交互项的多元线性回归

7.5 Logistic回归

  • What:一个或多个自变量来预测一个二值型类别因变量;

R - glm()

1
2
3
4
5
6
7
data$var <- with(data,{ifelse(var > n, 1,0)}) #赋值二分法
data$var <- factor(data$var)  因子化
fit <- glm(y ~ ., family=binomial, data= ) # ~. 表示除因变量之外的所有变量; bionmial,表示逻辑回归
summary(fit) #查看是否有不显著的变量(p>0.05)
fit.reduced <- setp(fit) #采用逐步逻辑回归生成一个包含更少自变量的模型;目的是通过增加或移除变量来得到一个更新的AIC值
coef(fit.reduced) #查看回归系数,含义是当其他自变量不变时,一单位自变量的变化引起的因变量的对数优势比的变量
exp(coef(fit.reduced)) # 将回归系数指数化,自变量增加n个单位,变为引起因变量的指数比的变化为 x^n ; 若n=1,则直接乘以x

9. 多种条件假设检验

9.1 独立性检验

  • 常规情况下可通过经验来判断各个变量是否独立;例如,我们没有理由去相信,一位女性的体重会影响我们选取的下一位女性的体重;

Durbin-Watson检验

  • What:通过确定两个相邻误差项的相关性是否为,来检验回归残差是否存在自相关
  • Why :可以检测误差的序列相关性;
  • How :该检验适用于时间独立的数据
    • 滞后项(lag=1),表示数据集中的每个数据都是与后一个数据进行比较的
    • p值,若p值>0.05,说明不拒绝假设;即说明两者之间相关性为0,即独立

R - durbinWatsonTest - car包

1
durbinWatsonTest(fit)

9.2 正态性检验

  • What:当自变量固定时,因变量呈正态分布;所以,残差值也应该是一个均值为0的正态分布
    • 正态Q-Q图:在正态分布对应的值下,显示标准化残差的概率图
    • 样本分位数(Sample Quantiles)-纵轴;理论分位数(Theoretical Quantiles)-横轴
  • How :若满足正态性假设,标准化残差的概率点应该落在呈45度角的直线上

R - plot()

1
plot(fit) #观察正态Q-Q图

R - qqPlot() - car包

1
2
3
qqPlot(fit, labels=row.names(states), id.method="identify", simulate=T, main="Q-Q plot")
id.method="identify",表示能够交互式绘图
simulate=T, 表示95%的置信区间用参数自助法生成

纵坐标为学生化残差值; rstudent(fit)[“Nevada”] 特定行的学生化残差值

9.3 方差齐性检验

R - bartlett.test()

1
2
> bartlett.test(y ~ x , data= ) # 若p<0.05,说明变量方差之间有差异,不满足方差齐性;
>

>

R - plot()

1
2
> plot(fit) #观察位置尺度图(预测值vs√标准化残差 图)
>

>

水平线周围的点是随机分布的,则说明方差相等;

R - nevTest() - car包

1
2
3
> nevTest(fit)
> spreadLevelPlot(fit)
>

>

观察p值,若p>0.05,说明接受原假设,即方差是相等的;

观察图形,若点在水平的最佳拟合曲线周围呈水平随机分布,说明方差是相等的;

9.4 线性检验

R - plot()

plot(fit) 观察 预测值vs残差图;

若两者之间没有任何关联,则说明是自变量与因变量是线性的

因当自变量与因变量线性相关,则残差值(实际值-模型预测值)与模型预测的值就没有任何关系;

R - crPlots() - car包

crPlots(fit) 得出成分残差图;

两条线很接近,说明数据是线性的;

9.1-9.4 线性模型的综合检验

R - gvlma() - gvlma包

1
2
3
> gvlma(fit)
> summary(gvlma(fit))
>

>

观察p值,若p>0.05,说明是满足假设的;

Skewness偏度:对应正态性

Kurtosis峰态:

Link Function线性;

Heteroscedasticity异方差性;

9.5 异常值

9.5.1 离群点

  • What:地域预测模型效果不佳的点,它们通常有很大的正或负的残差;
  • Why :正的残差(观测值-预测值)说明模型低估了因变量;
  • How1:一种简单的判别方法是,标准化残差值大于2或小于-2的点可能是离群点。
  • How2:Q-Q图中落在置信区间带外部的点;

R - outlierTest() - car包

1
2
3
> outlierTest(fit) #fit为拟合后的对象
> 若p<0.05,说明有离群点;当p>1时,将产生NA
>

>

该函数只判断单个最大(正或负)残差值的显著性来判断是否有离群点;

若不显著,说明没有离群点;

若显著,必须要删除离群点,然后再检验是否有离群点;

9.5.2 高杠杆值点

  • What:与其他自变量有关的离群点;它们是有许多异常的预测变量值组合起来的,但是与因变量没有关系;
  • How :可以通过帽子统计量(hat statistic)来判断;

9.5.3 强影响点

  • What:对模型参数估计值影响比较大的的点;例如,若移除一个观测点,会对模型产生很大的影响;
  • How1:Cook距离/D统计量;
  • How2:变量添加图

9.6 相关性检验

  • Why :得出相关系数后,对其进行显著性检验,H~0~ :变量间不相关,相关系数=0
  • 两变量

cor(x,y, alternative="two.side", method="pearson")

less/greater; pearson/spearman/kenall; 每一次只能检验一种相关系数

  • 多变量两两检验
1
2
3
library(psych) #加载psych包
corr.test(table, use="", method="")
use="complete","pairwise" #针对缺失值的处理,行删除/成对删除
  • 偏相关检验
1
2
3
library(ggm) #加载ggm包
pcor.test(r, q_num, n_num)
# r,pcor得到的相关系数; q_num,要控制的变量数(以数值表示位置); n,样本大小;

10. 多种模型评判

10.1 多重共线性

  • What:自变量之间存在一定的相关性;

  • Why :会导致模型参数的置信区间过大,使单个系数解释起来困难;

  • How :用方差膨胀因子VIF(Variance Inflation Factor)进行检测;$\sqrt {VIF}$ 表示变量回归参数的置信区间能膨胀为与模型无关的预测变量的程度。

R - vif() - car包

1
2
3
> > vif(fit)
> > sqrt(vif(fit))
> >

>

若$\sqrt {vif}$ > 2,表明存在多重共线性问题;

12. 时间序列

  • What:数据随着时间的变化反复测量变量值;
  • Why :1.对数据的描述(这段时间发生了什么?);2.对数据的预测(接下来会发生什么?)

生成时序对象

R - ts()

1
2
3
4
5
6
> > tsales <- ts(scale, start=c(2003,1), frequency=12) #生成时序对象
> > tsales
> > plot(tsales)
> > start(tsales)/ end(tsales) / frequency(tsalse) #可通过这三个函数查看性质
> > tsales.subset <- window(tsales, start=c(2003,5), end=c(2004,6)) # 取子集
> >

>

ts(data, start=, end=, frequency= )

start/end=可以是一个数值a,或一个含两个整数的向量c(a,b)

frequency= 1-数据对应年度数据;4-数据对应季度数据;12-数据对应月度数据;

12.1 简单移动平均

  • Why :对数据进行平滑处理,移除那些波动,从而探究总体趋势

居中移动平均

  • What:每个数据用这一点和其前后两个点平均值来表示;它的代价是会损失最后(k-1)/2个观测值;
$$S_t = (Y_{t-q}+...+Y_t+Y_{t+q})/(2q+1)$$

$S_t$是时间点t的平滑值; k=2q+1,每次用来平均的观测值的个数,一般设置一个奇数;

R - ma() - forecast包

1
2
3
4
5
6
7
8
> > opar <- par(no.readonly=T)
> > par(mfrow=c(2,2))
> > ylim <- c(min(Nile), max(Nile))
> > plot(Nile)
> > plot(ma(Nile, 3))
> > plot(ma(Nile, 7))
> > plot(ma(Nile, 15))
> >

>

ma(data, k)

随着k的增加,图像会越来越平滑;我们需要尝试多个k值,再决定一个最好的k值;

12.2 季节性分解

  • What:对于间隔大于1的时序数据(季度数据、月度数据),会存在季节性情况;可以被分解为趋势因子、季节性因子、随机因子
    • 趋势因子(Tread Component):能捕捉到长期变化
    • 季节性因子(Seasonal Component):捕捉到一年内的周期性变化
    • 随机误差因子(irregular/error Component):捕捉那些不能被趋势和季节性效应解释的变化;
  • Why :观察数据的季节性波动 + 总体趋势
  • How :通过相加 或 相乘 来分解数据
    • 相加模型:$Y_t = Trend + Seasonal + Irregular$
    • 相乘模型:$Y_t = Trend $ $\times$ $Seasonal $ $\times$ $Irregular$ ;相乘模型以比例的形式来呈现,很多时候效果更好;

R - stl()

1
2
> > stl()
> >

>

12.3 指数预测模型

12.3.1 单指数平滑

  • What:根据现有的时序值的加权平均对未来值做短期预测;权数选择的标准是使得距离现在越远的观测值对现在的影响越小
    • 阻尼$\alpha$控制权数下降的速度;$\alpha$越接近1,表明近期观测值的权重越大