什么是回归分析
给你一系列的有着联系的数据,有自变量和因变量这样内在联系的,然后通过对这些数据进行处理,利用数学方法进行线性方程建模,然后最终通过你建立的模型,对未提供给的自变量预测
那什么是预测?
所谓预测,就是利用一个训练完毕的模型 ,根据输入的自变量 获得对应的输出 。在预测任务中,如果模型 可以准确地提供预测,那么 是什么形式并不重要,而如果 的形式非常复杂且难以解释,我们可以将之称为黑盒模型(Black Box)。
举一个例子,假设Xi 是某个病人的血样特征, 测量了病人使用药物后出现严重不良反应的风险,那么如果存在一个模型可以很好地通过Xi 以预测Yi ,那自然是再好不过的事了。此时,模型的形式、变量之间的关系在正确预测面前都显得不那么重要。
什么是推断?
在很多情况下,我们对当 X的变化时如何影响Y 更感兴趣,此时,我们估计模型 的目的不是为了预测 ,而是想明白两者之间的关系
线性回归模型
y
=
x
+
u
y=x+u
y=x+u
进一步
y = a 0 + ∑ i = 1 n a i x i y=a_0+\sum^{n}_{i=1}a_ix_i y=a0+i=1∑naixi
一维线性模型
y
=
a
0
+
a
1
x
1
+
u
y=a_0+a_1x_1+u
y=a0+a1x1+u
a
0
是截距项,可以理解为
x
=
0
时候
y
的期望,
a
1
可以理解为
x
每增加一个单位,
y
平均增
a
1
个单位
a_0 是截距项,可以理解为x=0时候 y的期望 ,a_1可以理解为x每增加一个单位,y平均增a_1个单位
a0是截距项,可以理解为x=0时候y的期望,a1可以理解为x每增加一个单位,y平均增a1个单位
最小二乘法
import statsmodels.api as sm
model = sm.OLS(endog, exog=None, missing='none', hasconst=None, **kwargs)
'''参数
endog: array_like
一个一维的因变量。
exog: array_like
默认情况下,截距是不包含的,应该由用户添加。
使用 statsmodels.tools.add_constant 添加。
missing: str
可用的选项有 'none'、'drop' 和 'raise'。如果 'none',则不进行 nan 检查。如果 'drop',则丢弃任何使用 nan 的观察值。如果 'raise',则抛出一个错误。默认的是 'none'。
hasconst: None or bool
指示RHS是否包含用户提供的常量。如果为True,则不检查常数,k_constant设置为1,并计算所有结果统计信息,就像存在常数一样。如果为False,则不检查常数,并将k_constant设置为0。
**kwargs
使用公式接口时用来设置模型属性的额外参数。
'''
正态分布
from scipy.stats import norm
import numpy as np
# 生一个均值为1,方差为2的正态分布
distribution=norm(loc=1.0, scale=2.0)
# 显示均值和方差
print(distribution.stats())
# 进行采样
samples=distribution.rvs(size=1000)
# 样本的均值和标注差
print(np.mean(samples), np.std(samples))
# 对数据进行拟合
print(norm.fit(samples))