二元线性回归
拟合函数为 \(y=\hat b x+\hat a\)。使用最小二乘法求 \(\hat a\)、\(\hat b\):
残差:\(\widehat Q\) \[ \begin{aligned} \widehat Q&=\sum^n_{i=1} (y_i-(a+bx_i))^2\\ &=\sum^n_{i=1}(y_i-\bar y)^2+n\left[\bar y -(a+b\bar x)\right]^2 \\ &+ \sum^n_{i=1}(x_i-\bar x)^2\left[b-\frac{\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)}{\sum^n_{i=1}(x_i-\bar x)^2}\right]^2\\ &- \frac{\left(\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)\right)^2}{\sum^n_{i=1}(x_i-\bar x)^2} \end{aligned} \] 令 \(\widehat Q(\hat a, \hat b) =\min \widehat Q(a,b)\),则有: \[ \begin{aligned} \hat b&=\frac{\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)}{\sum^n_{i=1}(x_i-\bar x)^2} \\ &= \frac{\sum^n_{i=1}x_iy_i-n\bar x\bar y}{\sum^n_{i=1}x_i^2-n(\bar x)^2}\\ \hat a&=\bar y-\hat b\bar x \end{aligned} \] 如何验证线性关系的可靠性?
- 相关系数 \(r\) 值检验
当 \(a=\hat a, b=\hat b\) 时 \[ \begin{aligned} \text{LHS}&=\sum^n_{i=1}(y_i-\bar y)^2-\frac{\left(\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)\right)^2}{\sum^n_{i=1}(x_i-\bar x)^2} \end{aligned} \] 又因为残差一定大于等于 0,所以 \[ \sum^n_{i=1}(y_i-\bar y)^2\ge\frac{\left(\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)\right)^2}{\sum^n_{i=1}(x_i-\bar x)^2} \] 所以 \[ 1\ge\frac{\left(\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)\right)^2}{\sum^n_{i=1}(x_i-\bar x)^2\cdot\sum^n_{i=1}(y_i-\bar y)^2} \] 设 \[ r^2=\frac{\left(\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)\right)^2}{\sum^n_{i=1}(x_i-\bar x)^2\cdot\sum^n_{i=1}(y_i-\bar y)^2} \] 则有 \(r\) 为相关系数(查表可得),与自由度 \(n-2\)(\(n\) 为数据总量)有关。\(r\) 越接近 1 表示两个变量越相关。 \[ r=\frac{\sum^n_{i=1}(x_i-\bar x)(y_i-\bar y)}{\sqrt{\sum^n_{i=1}(x_i-\bar x)^2\cdot\sum^n_{i=1}(y_i-\bar y)^2}} \] 如果 \(r \ge r_{0.05}\),则认为有 95% 的概率 \(x\) 和 \(y\) 是相关的,该线性回归方程有效。否则认为该方程无意义。
- \(p\) 值检验:
原假设是斜率为 0(不相关),备择假设是斜率不为 0(相关)。\(p\) 值的定义为在原假设成立的情况下,样本中结果发生的概率。如果 \(p \ge 0.05\),则相关性不显著;\(p \lt 0.05\) 为显著,\(p < 0.01\) 为非常显著。
首先是 \(t\) 值的计算。斜率为 \(\hat b\),标准误差为 \(\text{SE}\),自由度 \(\text{DF}=n-2\)。
有: \[ \begin{aligned} \text{SE}&=\text{S}_{\hat b}=\sqrt{\frac{\sum_{i=1}^n(y_i-\bar y)^2}{(n-2)\cdot\sum_{i=1}^n(x_i-\bar x)}}\\ t&=\frac{\hat b}{\text{SE}} \end{aligned} \] \(t\) 值服从 t Distribution,计算其 \(p\) 值需要一些特殊技巧,包括但不限于掌握正态分布累计分布函数(CDF)的表达式: \[ \operatorname{cdf}\,(x;\mu,\sigma)=\frac{1}{\sigma\sqrt{2\pi}}\int_{-\infty}^x\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)\,\text{d}x \] 这个玩意要手算可能得神仙来算,所以给出数学软件中的计算方法:
在 MATLAB 中,计算 \(p\) 值的方法:(因为是双侧检验 \(p\) 值,所以要乘以 2)
1 | p = 2 * [1 - normcdf(abs(t))] |
R 语言:
1 | p = 2 * [1 - pnorm(abs(t))] |
Excel 中计算 \(p\) 值的方法的等价 MATLAB 代码:
1 | p = 2 * (1 - norm.div(abs(t), 0, 1, TRUE)) |
(可以在这里在线运行 MATLAB 代码)
Citation:
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6829375&page=1#pid55641795
http://blog.sciencenet.cn/home.php?mod=space&uid=651374&do=blog&id=1053456&from=space
https://stattrek.com/probability-distributions/t-distribution.aspx
https://stattrek.com/regression/slope-test.aspx
https://blog.csdn.net/renwudao24/article/details/44465407