《Probability for Data Science-Chapter_24》翻译

面向数据科学的概率论——第二十四章 简单线性回归

原文:https://nbviewer.jupyter.org/github/prob140/textbook/tree/gh-pages/notebooks/Chapter_24/

译者:ThomasCai

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

文章目录

00 简单线性回归

在数据科学中,回归模型被广泛地应用于预测。本章从概率论的角度来研究线性最小二乘法。重点是简单回归,即基于一个数值属性的预测。

当属性XXX和响应YYY的联合分布为二元正态分布时,(X,Y)(X,Y)(X,Y)的经验分布是橄榄球的形状,与数字8的非常相似。我们将从相关的几何解释开始,因为这有助于理解回归和二元正态分布。我们要推导的线性回归的方程,可以用几种方法来表示;在本章的末尾,我们将以最容易扩展到多元回归的方式来表示它。

01 二元正态分布

# HIDDEN
from datascience import *
from prob140 import *
import numpy as np
import warnings
import matplotlib.cbook
warnings.filterwarnings("ignore",category=matplotlib.cbook.mplDeprecation)
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
%matplotlib inline
from scipy import stats
# HIDDEN

def sin(theta):
    return np.sin(theta * np.pi/180)
def cos(theta):
    return np.cos(theta * np.pi/180)
def tan(theta):
    return sin(theta)/cos(theta)

def projection_1_2(theta):
    x = 1
    z = 2
    y = x*cos(theta) + z*sin(theta)
    plt.figure(figsize=(6, 6))
    plt.scatter(x, z, s=40, color='green')
    plt.plot([-3, 3], [0, 0], color='grey', lw=2, label=r'$X$'+' axis')
    plt.plot([0, 0], [-3, 3], color='grey', lw=2)
    plt.plot([-3, 3], [tan(theta)*(-3), tan(theta)*3], color='gold', lw=2, label='New axis at positive angle '+r'$\theta$ to the '+r'$X$'+' axis')
    plt.plot([0, x], [0, 0], color='blue', lw=2)
    plt.plot([x, x], [0, z], color='green', linestyle='--', lw=2)
    plt.plot([x, cos(theta)*y], [z, sin(theta)*y], color='green', linestyle='--', lw=2)
    plt.plot([0, cos(theta)*y], [0, sin(theta)*y], color='red', lw=2)         
    plt.axes().set_aspect('equal')
    plt.legend(bbox_to_anchor=(1.92, 1.02))
    plt.xlabel('$X$')
    plt.ylabel('$Z$', rotation=0)
    plt.title('Projection of $(X, Z) = (1, 2)$ on Gold Axis')
    plt.xlim(-3, 3)
    plt.ylim(-3, 3)
    
def projection_trig():
    x = 1
    z = 2
    x1 = x*cos(theta)
    x2 = z*sin(theta)
    y = x1 + x2
    plt.figure(figsize=(8, 8))
    plt.scatter(x, z, s=40, color='green')
    plt.plot([-3, 3], [0, 0], color='grey', lw=2)
    plt.plot([0, 0], [-3, 3], color='grey', lw=2)
    plt.plot([-3, 3], [tan(theta)*(-3), tan(theta)*3], color='gold', lw=2)
    plt.plot([0, x], [0, 0], color='blue', lw=2)
    plt.plot([x, x], [0, z], color='green', linestyle='--', lw=2)
    plt.plot([x, cos(theta)*y], [z, sin(theta)*y], color='green', linestyle='--', lw=2)
    plt.plot([x, cos(theta)*x1], [0, sin(theta)*x1], color='k', linestyle='--', lw=2)
    plt.plot([cos(theta)*y, x+cos(theta)*x2], [sin(theta)*y, sin(theta)*x2], color='k', linestyle='--', lw=2)
    plt.plot([x, x+cos(theta)*x2], [0, sin(theta)*x2], color='k', linestyle='--', lw=2)
    plt.plot([0, cos(theta)*x1], [0, sin(theta)*x1], color='brown', lw=3, label='Length = '+r'$X\cos(\theta)$')
    plt.plot([cos(theta)*x1, cos(theta)*y], [sin(theta)*x1, sin(theta)*y], color='darkblue', lw=3, label='Length = '+r'$Z\sin(\theta)$')
    plt.text(0.3, 0.06, r'$\theta$', fontsize=20)
    plt.text(1.03, 1.6, r'$\theta$', fontsize=20)
    plt.text(0.8, 2.1, r'$(X, Z)$', fontsize=15)
    plt.legend(bbox_to_anchor=(1.35, 1))
    plt.axes().set_aspect('equal')
    plt.xlabel('$X$')
    plt.ylabel('$Z$', rotation=0)
    plt.title('$Y =$ '+r'$X\cos(\theta) + Z\sin(\theta)$')
    plt.xlim(-0.5, 3)
    plt.ylim(-0.5, 3)

二元正态分布

多元正态分布由均值向量和协方差矩阵定义。协方差的单位通常难以理解,因为它们是两个变量的单位的乘积。

将协方差归一化以使其更容易解释是个好主意。正如你们在练习中看到的,对于联合分布的随机变量XXX和YYY, XXX和YYY之间的相关性(译者注:相关系数)定义为:

τX,Y=Cov(X,Y)σXσY=E(XμXσXYμYσY)=E(XY)\tau{_X,_Y}=\frac{Cov(X,Y)}{\sigma{_X}\sigma{_Y}}=E(\frac{X-\mu{_X}}{\sigma{_X}}\cdot\frac{Y-\mu{_Y}}{\sigma{_Y}})=E(X{^*}Y{^*})τX​,Y​=σX​σY​Cov(X,Y)​=E(σX​X−μX​​⋅σY​Y−μY​​)=E(X∗Y∗)

其中XX{^*}X∗是标准单位的XXX,YY{^*}Y∗是标准单位的YYY。

相关性的性质

你在练习中可以看到这些。

  • τX,Y\tau{_X,_Y}τX​,Y​只依赖于标准单位,因此它是一个没有单位的纯数
  • τX,Y=τY,X\tau{_X,_Y}=\tau{_Y,_X}τX​,Y​=τY​,X​
  • 1τX,Y1-1\leq\tau{_X,_Y}\leq1−1≤τX​,Y​≤1
  • 如果Y=aX+bY=aX+bY=aX+b,然后τX,Y\tau{_X,_Y}τX​,Y​是1或-1,这根据aaa的符号是正还是负。

我们认为τX,Y\tau{_X,_Y}τX​,Y​衡量了XXX和YYY的线性关系。

和的方差

重写一下相关性的公式

Cov(X,Y)=τX,YσXσYCov(X,Y)=\tau{_X,_Y}\sigma{_X}\sigma{_Y}Cov(X,Y)=τX​,Y​σX​σY​

所以X+YX+YX+Y的方差是

σX+Y2=σX2+σY2+2τX,YσXσY\sigma{^2_{X+Y}}=\sigma{^2_X}+\sigma{^2_Y}+2\tau{_{X,Y}\sigma_X\sigma_Y}σX+Y2​=σX2​+σY2​+2τX,Y​σX​σY​

注意与两个向量之和的长度的公式并行,相关性扮演着两个向量夹角的余弦的角色。如果这个角是90度,那么cos值为0。这对应于相关性也为零,因此随机变量是不相关的。

XXX和YYY的联合分布是二元正态分布的情况下,我们将可视化这个想法。

标准二元正态分布

XXX和ZZZ是独立的标准正态变量,即具有均值向量000和协方差矩阵等于单位矩阵的二元正态随机变量。 现在确定一个数ρ\rhoρ(即希腊字母rho,小写r),使1&lt;ρ&lt;1-1 &lt;\rho&lt;1−1<ρ<1,并令

A=[10ρ1ρ2] A=\left[ \begin{matrix} 1 &amp; 0 \\ \rho &amp; \sqrt{1-\rho{^2}} \\ \end{matrix} \right] A=[1ρ​01−ρ2​​]

定义一个新的随机变量Y=ρX+1ρ2ZY=\rho X+\sqrt{1-\rho{^2}}ZY=ρX+1−ρ2​Z,并注意到

[XY]=[10ρ1ρ2][XZ]=A[XZ] \left[ \begin{matrix} X \\ Y \\ \end{matrix} \right] =\left[ \begin{matrix} 1 &amp; 0 \\ \rho &amp; \sqrt{1-\rho{^2}} \\ \end{matrix} \right] \left[ \begin{matrix} X \\ Z \\ \end{matrix} \right] = A \left[ \begin{matrix} X \\ Z \\ \end{matrix} \right] [XY​]=[1ρ​01−ρ2​​][XZ​]=A[XZ​]

所以XXX和YYY是均值向量为000和协方差矩阵的二元正态分布。

AIAT=[10ρ1ρ2][1ρ01ρ2]=[1ρρ1] AIA{^T} =\left[ \begin{matrix} 1 &amp; 0 \\ \rho &amp; \sqrt{1-\rho{^2}} \\ \end{matrix} \right] \left[ \begin{matrix} 1 &amp; \rho \\ 0 &amp; \sqrt{1-\rho{^2}} \\ \end{matrix} \right] = \left[ \begin{matrix} 1 &amp; \rho \\ \rho &amp; 1 \\ \end{matrix} \right] AIAT=[1ρ​01−ρ2​​][10​ρ1−ρ2​​]=[1ρ​ρ1​]

我们说XXX和YYY有标准的二元正态分布,相关性ρ\rhoρ。

下图显示了在ρ=0.6\rho= 0.6ρ=0.6的情况下1000个(X,Y)(X,Y)(X,Y)点的经验分布。 您可以改变rhorhorho的值(译者注:也就是ρ\rhoρ)并观察散点图是如何变化的。 它将使您想起数据8中的许多此类模拟。

# Plotting parameters
plt.figure(figsize=(5, 5))
plt.axes().set_aspect('equal')
plt.xlabel('$X$')
plt.ylabel('$Y$', rotation=0)
plt.xticks(np.arange(-4, 4.1))
plt.yticks(np.arange(-4, 4.1))

# X, Z, and Y
x = stats.norm.rvs(0, 1, size=1000)
z = stats.norm.rvs(0, 1, size=1000)
rho = 0.6
y = rho*x + np.sqrt((1-rho**2))*z
plt.scatter(x, y, color='darkblue', s=10);

《Probability for Data Science-Chapter_24》翻译

02 线性最小二乘法

03 回归和二元正态分布

04 回归方程

上一篇:python – 使用scipy.stats.hypergeom从SciPy的甲板上绘制卡片


下一篇:面试题60:n个骰子的点数