本笔记为DataWhale 9月GitModel课程的学习内容,链接为:
https://github.com/Git-Model/Modeling-Universe/Data Analysis and Statistical Modeling/
目录
- 一、T 检验
- 1. 单参数检验问题: H 0 : β j = β j 0 ↔ H 1 : β j ≠ β j 0 H_{0}: \beta_{j}=\beta_{j 0} \leftrightarrow H_{1}: \beta_{j} \neq \beta_{j 0} H0:βj=βj0↔H1:βj=βj0 ( β j 0 \beta_{j 0} βj0为任意常数)
- 2. 参数线性组合检验问题: H 0 : f ( β ) = β 0 ↔ H 1 : f ( β ) ≠ β 0 H_0:f\left( \beta \right) =\beta _0\leftrightarrow H_1:f\left( \beta \right) \ne \beta _0 H0:f(β)=β0↔H1:f(β)=β0 ( β 0 \beta _0 β0为任意常数)
- 二、F 检验
- 三、广义线性回归(GLM)
一、T 检验
1. 单参数检验问题: H 0 : β j = β j 0 ↔ H 1 : β j ≠ β j 0 H_{0}: \beta_{j}=\beta_{j 0} \leftrightarrow H_{1}: \beta_{j} \neq \beta_{j 0} H0:βj=βj0↔H1:βj=βj0 ( β j 0 \beta_{j 0} βj0为任意常数)
回归系数的显著性检验就是“系数是否为0”的检验:
H
0
:
β
j
=
0
↔
H
1
:
β
j
≠
0
H_{0}: \beta_{j}=0 \leftrightarrow H_{1}: \beta_{j} \neq 0
H0:βj=0↔H1:βj=0
原假设
H
0
H_{0}
H0 一般是我们要拒绝的部分,而且我们要在一个合理的范围内拒绝原假设
H
0
H_{0}
H0 。为此设立一个临界值
C
C
C
,若
∣
β
^
j
−
0
∣
>
C
\left|\hat{\beta}_{j}-0\right|>C
∣
∣β^j−0∣
∣>C ,我们就拒绝假设
H
0
H_{0}
H0 。
在进行假设检验的过程中,不论拒绝与否,都有概率会犯以下两类错误的其中之一:
- 第一类错误,即原假设成立但是我们拒绝了它。犯第一类错误的概率称为拒真概率。
- 第二类错误,即原假设不成立但是我们没有拒绝它。
保证发生第一类错误的概率需要在一个给定的、较小的水平
α
\alpha
α ,这个
α
\alpha
α 也被称为显著性水平。
P
H
0
i
s
t
r
u
e
(
∣
β
^
j
−
β
j
0
∣
>
C
)
=
P
(
∣
β
^
j
−
0
∣
>
C
)
=
α
P_{H_0\,\,is\,\,true}\left( \left| \hat{\beta}_j-\beta _{j0} \right|>C \right) =P\left( \left| \hat{\beta}_j-0 \right|>C \right) =\alpha
PH0istrue(∣
∣β^j−βj0∣
∣>C)=P(∣
∣β^j−0∣
∣>C)=α
(1)双边检验:
P ( ∣ β ^ j ∣ > C ) = P ( ∣ β ^ j ∣ se ( β ^ j ) > C se ( β ^ j ) ) = α P\left(\left|\hat{\beta}_{j}\right|>C\right)=P\left(\frac{\left|\hat{\beta}_{j}\right|}{\operatorname{se}\left(\hat{\beta}_{j}\right)}>\frac{C}{\operatorname{se}\left(\hat{\beta}_{j}\right)}\right)=\alpha P(∣ ∣β^j∣ ∣>C)=P⎝ ⎛se(β^j)∣ ∣β^j∣ ∣>se(β^j)C⎠ ⎞=α
C
s
e
(
β
^
j
)
=
t
n
−
k
−
1
(
1
−
α
2
)
\frac{C}{\mathrm{se}\left( \hat{\beta}_j \right)}=t_{n-k-1}\left( 1-\frac{\alpha}{2} \right)
se(β^j)C=tn−k−1(1−2α)
⟹
\implies
⟹
C
=
t
n
−
k
−
1
(
1
−
α
/
2
)
s
e
(
β
^
j
)
C=t_{n-k-1}(1-\alpha /2)\mathrm{se}\left( \hat{\beta}_j \right)
C=tn−k−1(1−α/2)se(β^j)
⟹
\implies
⟹
∣
β
^
j
∣
>
C
\left| \hat{\beta}_j \right| > C
∣
∣β^j∣
∣>C
⟹
\implies
⟹
∣
β
^
j
∣
>
t
n
−
k
−
1
(
1
−
α
/
2
)
s
e
(
β
^
j
)
\left| \hat{\beta}_j \right|>t_{n-k-1}(1-\alpha /2)\mathrm{se}\left( \hat{\beta}_j \right)
∣
∣β^j∣
∣>tn−k−1(1−α/2)se(β^j)
这个系数是显著的,我们便可以拒绝原假设。
(2)单边检验:
单边检验则更关注变量对模型的正效应或负效应,其原假设和备择假设如下:
H
0
:
β
j
=
β
j
0
↔
H
1
:
β
j
>
β
j
0
(
β
j
0
=
0
)
H_0:\beta _j=\beta _{j0}\leftrightarrow H_1:\beta _j>\beta _{j0}\,\,\left( \beta _{j0}=0 \right)
H0:βj=βj0↔H1:βj>βj0(βj0=0)
求解目标也转变为:
P
(
β
^
j
−
0
>
C
)
=
α
P\left( \hat{\beta}_j-0>C \right)=\alpha
P(β^j−0>C)=α
C
=
t
n
−
k
−
1
(
1
−
α
)
s
e
(
β
^
j
)
C=t_{n-k-1}(1-\alpha)\mathrm{se}\left( \hat{\beta}_j \right)
C=tn−k−1(1−α)se(β^j)
若有:
β
^
j
>
t
n
−
k
−
1
(
1
−
α
)
s
e
(
β
^
j
)
\hat{\beta}_j >t_{n-k-1}(1-\alpha)\mathrm{se}\left( \hat{\beta}_j \right)
β^j>tn−k−1(1−α)se(β^j)
那么系数是显著的,可以拒绝原假设。
对应python中的不同函数:
For p-values:
- cdf(x, df, loc=0, scale=1): Cumulative distribution function.
- sf(x, df, loc=0, scale=1): Survival function (also defined as 1 - cdf, but sf is sometimes more accurate).
For t-values:
- ppf(q, df, loc=0, scale=1): Percent point function (inverse of cdf — percentiles).
- interval(confidence, df, loc=0, scale=1): Confidence interval with equal areas around the median.
具体细节可以参考:scipy.stats.t .
(3)p值(p-values)
- p值是在本次分析的样本观测值下,给出的能拒绝原假设的最小显著性水平,它只与样本观测值和我们做的假设检验有关;
- p值越小越可以拒绝原假设;
- p值本质上是一种累积概率;
- 双边检验的p值为单边检验的两倍。
p值的形式与我们做的备择假设 H 1 H_1 H1 有关:
- 若 H 1 : β j ≠ β j 0 H_{1}: \beta_{j} \neq \beta_{j 0} H1:βj=βj0,则: p v a l u e = P ( ∣ t n − k − 1 ∣ > ∣ β ^ j − β j 0 s e ( β ^ j ) ∣ ) pvalue=P\left( \left| t_{n-k-1} \right|>\left| \frac{\hat{\beta}_j-\beta _{j0}}{se\left( \hat{\beta}_j \right)} \right| \right) pvalue=P(∣tn−k−1∣>∣ ∣se(β^j)β^j−βj0∣ ∣) ;
- 若 H 1 : β j > β j 0 H_{1}: \beta_{j} > \beta_{j 0} H1:βj>βj0,则: p v a l u e = P ( t n − k − 1 > β ^ j − β j 0 s e ( β ^ j ) ) pvalue=P\left( t_{n-k-1}>\frac{\hat{\beta}_j-\beta _{j0}}{se\left( \hat{\beta}_j \right)} \right) pvalue=P(tn−k−1>se(β^j)β^j−βj0) ;
- 若 H 1 : β j < β j 0 H_{1}: \beta_{j} < \beta_{j 0} H1:βj<βj0,则: p v a l u e = P ( t n − k − 1 < β ^ j − β j 0 s e ( β ^ j ) ) pvalue=P\left( t_{n-k-1}<\frac{\hat{\beta}_j-\beta _{j0}}{se\left( \hat{\beta}_j \right)} \right) pvalue=P(tn−k−1<se(β^j)β^j−βj0) ;
Tips: 由于双边检验p值是对单边检验p值乘两倍得来的,我们要根据t值是否大于0来选择左/右尾累积概率,若小于0,则选择左尾;反之右尾。
2. 参数线性组合检验问题: H 0 : f ( β ) = β 0 ↔ H 1 : f ( β ) ≠ β 0 H_0:f\left( \beta \right) =\beta _0\leftrightarrow H_1:f\left( \beta \right) \ne \beta _0 H0:f(β)=β0↔H1:f(β)=β0 ( β 0 \beta _0 β0为任意常数)
- sm.formula.ols与sm.ols不同,其最大的特点是可以指定模型的形式,这非常有利于我们自主的构建模型,此后我们将统一使用该指令。
- 值得注意的是,sm.formula.ols默认带截距项。
Tips:
- 这里告诉大家巧用summary中的双侧p值进行单侧0值检验的小技巧。在summary中,t值小于0,说明它后面的双侧p值是使用左侧累积概率乘两倍得来的,而在本例中我们的备择假设是小于0,p值也应当是左侧累积概率,因此我们只需将报告表中的p值除以2即可。而如果t值小于0,但是备择假设却大于0,那么无需思考,p值一定大于0.5,我们肯定不能拒绝原假设。
二、F 检验
1. F 检验适用范围
- F检验是回归分析中多个线性假设检验问题(多参数检验问题)的常用检验方法。
- 多个线性假设检验问题可分为如下:
a. 多参数联合显著性检验问题: H 0 : β i = ⋯ = β j = 0 ↔ H 1 : H 0 H_{0}: \beta _i=\cdots =\beta _j=0 \leftrightarrow H_{1}:H_{0} H0:βi=⋯=βj=0↔H1:H0不成立;
b. 一般多参数检验问题: H 0 : β n = β n 0 , β i = ⋯ = β j = 0 ↔ H 1 : H 0 H_0:\beta _n=\beta _{n0}\,\,, \beta _i=\cdots =\beta _j=0\leftrightarrow H_1:H_{0} H0:βn=βn0,βi=⋯=βj=0↔H1:H0不成立;
Tips:
- 多个参数做联合显著性检验完全不等价于多个参数分开做显著性t检验。
- 如果我们是出于联合检验的目的但是却做了分开检验,将大大增加拒真概率。由于无法分开始用t检验进行联合检验,我们需要一种新的检验方法——F检验。
2. F统计量的定义:
- 在回归分析中,F检验更像是在比较两种模型的差异程度(variances of the two normal populations):
- 一个是,原模型——无约束模型(unrestricted model);
- 另一个是,原假设 H 0 H_0 H0 成立下的条件代入后的有约束模型(restricted model)。
- 无约束模型比有约束模型多了 H 0 H_0 H0 成立下的参数与变量。
- 一般而言,模型变量越多,对训练集数据的变异解释程度会越高,拟合优度会越好,进而残差平方和会减小。
- 如果两个模型残差平方和的差异足够大,说明原假设约束的加入使模型产生了显著性的变化,即原假设是显著的。
- F 检验统计量形式如下: F = ( R S S r − R S S u r ) / q R S S u r / ( n − k − 1 ) ∼ F q , n − k − 1 F=\frac{\left( RSS_r-RSS_{ur} \right) /q}{RSS_{ur}/(n-k-1)}\sim F_{q,n-k-1} F=RSSur/(n−k−1)(RSSr−RSSur)/q∼Fq,n−k−1它服从自由度为 q q q 与 n − k − 1 n-k-1 n−k−1 的F分布,其中 q q q 为有效约束个数, n − k − 1 n-k-1 n−k−1 为无约束模型自由度。
- F检验拒绝原假设的判别规则: F > F q , n − k − 1 ( 1 − α ) F>F_{q,n-k-1}\left( 1-\alpha \right) F>Fq,n−k−1(1−α)
Python做 F检验常用函数:
- sf(x, dfn, dfd, loc=0, scale=1): Survival function (also defined as 1 - cdf, but sf is sometimes more accurate).
- isf(q, dfn, dfd, loc=0, scale=1): Inverse survival function (inverse of sf).
具体细节可以参考:scipy.stats.f
3. T-test V.S. F-test
Comparison Chart
BASIS FOR COMPARISON | T-TEST | F-TEST |
---|---|---|
Definition | A t-test is a form of the statistical hypothesis test, based on Student’s t-statistic and t-distribution to find out the p-value (probability) which can be used to accept or reject the null hypothesis. | F-test is described as a type of hypothesis test, that is based on Snedecor f-distribution, under the null hypothesis. The test is performed when it is not known whether the two populations have the same variance. |
Meaning | T-test is a univariate hypothesis test, that is applied when standard deviation is not known and the sample size is small. (所以我们会用 se 代替sd) | F-test is statistical test, that determines the equality of the variances of the two normal populations. |
Test statistic | T-statistic follows Student t-distribution, under null hypothesis. | F-statistic follows Snedecor f-distribution, under null hypothesis. |
Application | Comparing the means of two populations. | Comparing two population variances. |
Formula | β ^ j − β j se ( β ^ j ) ∼ t n − k − 1 \frac{\hat{\beta}_{j}-\beta_{j}}{\operatorname{se}\left(\hat{\beta}_{j}\right)} \sim t_{n-k-1} se(β^j)β^j−βj∼tn−k−1 | F = ( R S S r − R S S u r ) / q R S S u r / ( n − k − 1 ) ∼ F q , n − k − 1 F=\frac{\left( RSS_r-RSS_{ur} \right) /q}{RSS_{ur}/(n-k-1)}\sim F_{q,n-k-1} F=RSSur/(n−k−1)(RSSr−RSSur)/q∼Fq,n−k−1 |
部分内容来自:Difference Between T-test and F-test
三、广义线性回归(GLM)
所谓的线性回归模型,线性关系并不是指代被解释变量 y y y 与解释变量 X X X 之间的关系,而是指回归函数相对于回归系数是线性的。
推而广之,广义线性回归,是在前述简单多元线性回归的基础上,在变量种类(定性变量——二分类、多分类变量)、变量形式(对数化、二次项化、交互项化)上进行了拓展。
1. 变量种类——定性变量
a. 二分类变量
常见的二分类变量:性别(男/女)、婚姻状态(是/否);
对待这类变量,我们在建模时,会将其处理成:虚拟变量/哑变量(Dummy Variable)。
b. 多分类变量
常见的多分类变量:季节变量(春、夏、秋、冬);地理位置变量(华南、华北、华东、中部、西部)等。
针对多分类变量,在转换成虚拟变量时,需要注意以下事项:
- 具体的,如果一个变量有n个类别,则需要定义n-1个虚拟变量表示它。
- 不可以直接将转换后的虚拟变量同时纳入回归当中,我们可以选取一个虚拟变量作为“基组”,然后将其他非基组的虚拟变量纳入回归。
2. 变量形式——带有自变量函数的回归分析
a. 对数化
对数变换的作用——一些经验主义
(1) 作用
对数变换是线性回归中非常常见的变量变换,它的作用非常明显:
- 对数变换可以方便地计算变换百分比,于“价格”型变量而言,百分比解释比绝对值解释更有经济意义。
- 当因变量为严格取正的变量,它的分布一般存在异方差性或偏态性,这容易违背CLM假设的同方差/正态性假设。而对数变换可以缓和这种情况。
(2) 对数化标准
对于变量何时取对数,没有一个准确的标准,但在长久的实践中,我们认为可以遵循以下经验:
- 对于大数值大区间变量(价格类变量、人口变量等),可取对数变换,如:工资、薪水、销售额、企业市值、人口数量、雇员数量等。
- 对于小数值小区间变量(时间类变量等),一般不取对数变换,如:受教育年限、工作年限、年龄等。
b. 二次项
- 如果我们在回归建模前认为某个自变量对因变量的影响不是线性的,可以尝试加入二次项,并观察二次项的显著性。如果显著,就说明两者关系确实为非线性的。
c. 交互项
- 若某一个变量对因变量的效应依赖于另一个自变量,则我们可以在模型中加入交互项。
交互项又分为:定性变量间的交互效应、定性与定量变量的交互效应。