什么是回归分析
人们关心的因变量受自变量的关联性(非因果性)的影响,并且存在众多随机因素,难以用机理分析方法找出它们之间的关系;需要建立这些变量的数学模型,使得能够根据自变量的数值预测因变量的大小,或者解释因变量的变化。
换句话说:回归分析是一种类相关性分析,就是通过分析已知数据和其造成的影响,来预测未知数据造成的影响。
一般来说,回归分析的主要步骤:
- 收集一组包含因变量和自变量的数据 选定因变量与自变量之间的模型,利用数据按照最小二乘准则计算模型中的系数;
- 利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型;
- 判断得到的模型是否适合于这组数据, 诊断有无不适合回归模型的异常数据;
- 利用模型对因变量作出预测或解释。
线性回归
一元线性回归
模型为:
y i = β 0 + β 1 x i + ε y_i=\beta_0+\beta_1 x_i+\varepsilon yi=β0+β1xi+ε
i
=
1
,
2
,
3
,
⋅
⋅
⋅
,
n
i=1,2,3,···,n
i=1,2,3,⋅⋅⋅,n
其中:
x
x
x为自变量,
β
0
\beta_0
β0,
β
1
\beta_1
β1为回归系数,
ε
\varepsilon
ε是随机变量(影响
y
y
y的随机因素的总和)。
由于
x
,
β
x,\beta
x,β是非随机的,可以视作某个常数,故也可以理解为
y
i
∼
N
(
β
0
+
β
i
x
i
,
σ
2
)
y_i\sim N(\beta_0+\beta_ix_i,\sigma^2)
yi∼N(β0+βixi,σ2)
相当于正态总体的参数估计问题。
模型假设
- 独立:对于不同的 x , y x,y x,y相互独立
- 线性: y y y的期望是 x x x的线性函数
- 齐次:对于不同的 x , y x,y x,y的方差是常数
- 正态:对于给定的 x , y x,y x,y服从正态分布
ε \varepsilon ε是相互独立的、期望为 0 0 0、方差为 σ 2 \sigma^2 σ2,正态分布的随机变量即: ε ∼ N ( 0 , σ 2 ) \varepsilon \sim N(0,\sigma^2) ε∼N(0,σ2), ε \varepsilon ε称为随机误差。
回归系数的最小二乘估计
将数据
x
i
,
y
i
x_i,y_i
xi,yi带入
y
i
=
β
0
+
β
1
x
i
+
ε
y_i=\beta_0+\beta_1 x_i+\varepsilon
yi=β0+β1xi+ε,则对
Q
(
β
0
,
β
1
)
=
∑
i
=
1
n
ε
i
2
=
∑
i
=
1
n
[
y
i
−
(
β
0
+
β
1
x
i
)
]
2
Q(\beta_0,\beta_1)=\sum_{i=1}^n\varepsilon_i^2=\sum_{i=1}^n[y_i-(\beta_0+\beta_1x_i)]^2
Q(β0,β1)=i=1∑nεi2=i=1∑n[yi−(β0+β1xi)]2
随后对
β
0
,
β
1
\beta_0,\beta_1
β0,β1求偏导,得出:
β
0
^
=
y
ˉ
−
β
1
^
x
ˉ
\hat{\beta_0}=\bar{y}-\hat{\beta_1}\bar{x}
β0^=yˉ−β1^xˉ
β 1 ^ = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 \hat{\beta_1}=\frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^n(x_i-\bar{x})^2} β1^=∑i=1n(xi−xˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
x ˉ = 1 n ∑ i = 1 n x i \bar{x}=\frac{1}{n}\sum_{i=1}^nx_i\\ xˉ=n1i=1∑nxi
y ˉ = 1 n ∑ i = 1 n y i \bar{y}=\frac{1}{n}\sum_{i=1}^ny_i yˉ=n1i=1∑nyi
误差方差估计
残差:
e i = ε i ^ = y i − y i ^ e_i=\hat{\varepsilon_i}=y_i-\hat{y_i} ei=εi^=yi−yi^
Q = ∑ i = 1 n e i 2 = ∑ i = 1 n ( y i − y 2 ^ ) 2 Q=\sum_{i=1}^n e_i^2=\sum_{i=1}^n(y_i-\hat{y_2})^2 Q=i=1∑nei2=i=1∑n(yi−y2^)2
则
σ
2
\sigma^2
σ2的无偏估计:
s
2
=
σ
2
=
Q
n
−
2
s^2=\sigma^2=\frac{Q}{n-2}
s2=σ2=n−2Q
- n − 2 ∼ Q n-2\sim Q n−2∼Q的自由度=数据容量-模型中含有的参数个数
- s 2 s^2 s2剩余方差(样本方差), s s s剩余标准差(样本标准差)
回归系数的区间估计和假设检验
模型的有效性检验
利用一元线性回归模型进行预测
Matlab实现
b=regress(y,X)
[b,bint,r,rint,s]=regress(y,X,alpha)
输入:
- y:因变量(列向量)
- X:1与自变量组成的矩阵
- alpha:显著性水平(若无值,则设为0.05)
输出:
- b = ( β 0 ^ , β 1 ^ ) b=(\hat{\beta_0},\hat{\beta_1}) b=(β0^,β1^)
- bint: β 0 , β 1 \beta_0,\beta_1 β0,β1的置信区间
- r:残差
- rint:残差的置信区间
- s:决定系数 R 2 R^2 R2
- F F F值, F ( 1 , n − 2 ) F_{(1,n-2)} F(1,n−2)分布的分位数 F ( 1 , n − 2 ) , 1 − α F_{(1,n-2),1-\alpha} F(1,n−2),1−α大于 F F F值的概率 p p p,当 p < α p<\alpha p<α时,模型有效。
多元线性回归
标准方程
保证 X T X X^TX XTX可逆只需要保证 X X X满秩即可, n > m n>m n>m是因为观测y与变量x是有区别的,不然容易混淆。
误差方差估计
归回系数区间估计和假设检验
模型有效性检测
预测
例子
多元线性回归模型:已知某湖八年来湖水中COD浓度实测值(y)与影响因素湖区工业产值(x1)、总人口数(x2)、捕鱼量(x3)、降水量(x4)资料,建立污染物y的水质分析模型。
%输入数据
x1=[1.376, 1.375, 1.387, 1.401, 1.412, 1.428, 1.445, 1.477]
x2=[0.450, 0.475, 0.485, 0.500, 0.535, 0.545, 0.550, 0.575]
x3=[2.170 ,2.554, 2.676, 2.713, 2.823, 3.088, 3.122, 3.262]
x4=[0.8922, 1.1610 ,0.5346, 0.9589, 1.0239, 1.0499, 1.1065, 1.1387]
y=[5.19, 5.30, 5.60,5.82,6.00, 6.06,6.45, 6.95]
x=[ones(8,1),x1' x2' x3' x4']
[b,bint,r,rint,stats] = regress(y',x)
运行结果:
取得其中的结果:
且
所以
y
^
=
b
x
i
\hat{y}=bx_i
y^=bxi,
R
2
=
0.9846
,
F
=
47.9654
,
p
=
0.0123
R^2=0.9846,F=47.9654,p=0.0123
R2=0.9846,F=47.9654,p=0.0123
通过查表可知,
R
2
R^2
R2代表决定系数(
R
R
R代表相关系数),它的值很接近与1,说明此方程是高度线性相关的;
(这里使用的是F检验)
F
F
F检验值为
47.9654
47.9654
47.9654远大于
F
0.05
(
4
,
3
)
=
9.12
{F_{0.05}}(4,3) = 9.12
F0.05(4,3)=9.12,可见,检验结果是显著的。
非线性回归
什么是非线性回归
对于非线性回归分析,需要根据实际情况来确定函数类型,再根据已知的数据来估计非线性函数中的参数。常见的回归函数有幂函数、指数函数、对数函数、S型曲线函数,S型曲线函数中常见的是Logistic回归模型,其函数表达式为:
y = 1 a + b e − x y=\frac{1}{a+be^{-x}} y=a+be−x1
对于非线性回归,往往需要根据已知的数据绘制散点图,以此分析出数据的变化趋势,进而确定回归模型。
函数nlinfit语法:
[beta,r,j] = nlinfit(x,y,@function,b0)
其中:
- x表示自变量
- y表示因变量
- function表示回归函数的函数名
- b0表示回归函数中参数的初值
- beta表示回归参数的最优值
- r表示残差
- j表示雅克比矩阵
常见非线性函数模型:matlab 万能实用的非线性曲线拟合方法
例子请参照博客:非线性回归分析及其Matlab实现