心理学与数据统计

【课程笔记】《Udacity数据分析(入门)》「纳米学位」——第

2020-02-26  本文已影响0人  Tensor麻麻麻

第4部分:统计学

仅作为学习记录作为参考

统计学 - 总共分为16部分:

一、描述统计学 - 第一部分(选修)

1、数据类型

数据类型
数值 连续 离散
身高、年龄、收入 书中的页数、院子里的树、咖啡店里的狗
分类 定序 定类
字母成绩等级、调查评级 性别、婚姻状况、早餐食品

2、分析数值:数据
在分析离散数值数据和连续数值数据的时候,分析数值数据有四个主要方面:

集中趋势测量的方式有三种:

3、符号表达式介绍
表达式,学术和工业界专业人士用来传达数学思想的通用语言。符号表达式让难以用语言表达的想法变得更容易传达。

总结

二、描述统计学 - 第二部分(选修)

本部分主要讲分析值变量的第二方面:离散程度
离散程度测量用于告诉我们数据之间的分散程度。常见的离散程度测量包括:

很神奇,一个数据的众数、中位数、平均数都一样,离散程度差很多。


离散程度差异通过直方图表现出来

1、五数概括法
五数概括法包括 5 个值:

2、标准差和方差
标准差和方差计算两个数据哪个更分散,数据越大越分散
标准差(Standard Deviation)
每个观察值与均值之间的平均差异。
方差(variance)是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。

求方差 如何求标准差
方差和标注差部分——总结

3、形状和异常值

右偏态
关于形状小结

当出现 异常值 时,我们应该考虑以下几点。

  1. 注意到它们的存在以及对概括性度量的影响。
  2. 如果有拼写错误 —— 删除或改正。
  3. 了解它们为什么会存在,以及对我们要回答的关于异常值的问题的影响。
  4. 当有异常值时,报告五数概括法的值通常能比均值和标准差等度量更好地体现异常值的存在。
  5. 报告时要小心。知道如何提出正确的问题。

异常值处理建议

4、描述统计与推论统计


三、录取案例分析

1、 录取案例练习:辛普森悖论
案例总结:查看数据的方式的不同会引起完全不同的结果。


四、概率

1、概率和统计的区别

统计和概率是不同但又紧密相关的数学领域。
在概率中,我们根据假定的模型或原因,对未来事件做出预测;而在统计中,我们对过去发生的事件中的数据进行分析,从而推断出这些模型或原因是什么。一个是预测数据,另一个是根据数据进行预测。

举个🌰:


五、二项分布

1、计算多次抛硬币的情况

案例

n! 代表n的阶乘

公式
不同概率的情况
可以使用这个分布决定下列事件的概率: 二项分布公式

P代表概率,K代表出现次数,n代表操作次数


六、条件概率

条件概率总结

七、贝叶斯规则

1、条件概率

注释:

贝叶斯公式

2、贝叶斯公式
P(S|Y) = P(Y|S)*P(S) / P(Y)


八、Python概率练习

1、random函数
函数使用方法:
randint:

np.radom.randint(2,size = 100,)

choice

np.random.choice([0,1],size = 100,p=[0.3,0.7])——P是概率

使用示例

2、二项式:binomial函数

使用方法案例

九、正态分布理论

1、公式

正态分布公式

十、抽样分布与中心及限定理

1、 描述统计 与 推论统计

再次回顾之前学过的概念:
总体 —— 我们想要研究的整个群体。
参数 —— 描述总体的数值摘要
样本 —— 总体的子集
统计量 —— 描述样本的数值摘要

计算方差、标准差

v_5 = np.var(sample_props)
s_5 = np.std(sample_props)

2、抽样分布

image.png 参数和统计符号法.png

抽样分布涉及的两个重要数学定理包括:

三种最常见的估计技巧:

使用 numpy 的 random.choice 模拟从 pop_data 数组中进行3次取样

test_1 = np.random.choice(pop_data, 3)

中心极限定理 表示 样本容量足够大,平均数的抽样分布越接近正态分布。

中心极限定理
但是,中心极限定理不能应用于所有统计量。像方差

自助法
自助法 (bootstrap) 是放回抽样。在 python 中使用 random.choice 实际上是自助法。无论选择多少次,我们数据集中任何数字的概率保持不变。抛硬币和掷骰子也是自展抽样,因为在一个场景中滚动出 6,并不意味着后面出现 6 的概率降低。

下列是发现 "最佳统计量" 估计技巧最常见的三种方式:

两个有用链接:

总结

十一、置信区间

1、置信区间的使用



2、均数差

代码
  1. 对于10,000次迭代,自展法(bootstrap)会对你的样本数据进行抽样,计算喝咖啡和不喝咖啡的人的平均身高的差异。使用你的抽样分布建立一个99%的置信区间。
diff_coffee = []
for _ in range(10000):
    coffee_sample = sample_data.sample(200, replace = True)
    d_coffee = coffee_sample[coffee_sample['drinks_coffee'] == True]['height'].mean()
    nd_coffee = coffee_sample[coffee_sample['drinks_coffee'] == False]['height'].mean()
    diff_coffee.append(d_coffee - nd_coffee)
plt.hist(diff_coffee)
np.percentile(diff_coffee, 0.5), np.percentile(diff_coffee, 99.5)

  1. 对于10,000次迭代,自展法会对样本数据进行抽样,计算21岁以上和21岁以下的平均身高的差异。使用你的抽样分布构建一个99%的置信区间。
diff_coffee = []
for _ in range(10000):
    coffee_sample = sample_data.sample(200, replace = True)
    d_coffee = coffee_sample[coffee_sample['age'] == '<21']['height'].mean()
    nd_coffee = coffee_sample[coffee_sample['age'] != '<21']['height'].mean()
    diff_coffee.append(d_coffee - nd_coffee)
plt.hist(diff_coffee)
np.percentile(diff_coffee, 0.5), np.percentile(diff_coffee, 99.5)
  1. 对于10,000次迭代,自展法会对你的样本数据进行抽样,计算出21岁以下个体的喝咖啡的人的平均身高和不喝咖啡的人的平均身高之间的差异。使用你的抽样分布,建立一个95%的置信区间。
diff_21 = []
for _ in range(10000):
    coffee_sample = sample_data.sample(200, replace = True)
    d_coffee = coffee_sample.query("age == '<21' and drinks_coffee == True")['height'].mean()
    nd_coffee = coffee_sample.query("age == '<21' and drinks_coffee == False")['height'].mean()
    diff_21.append(d_coffee - nd_coffee)
plt.hist(diff_21)
np.percentile(diff_21, 2.5), np.percentile(diff_21, 97.5)
  1. 对于10,000次迭代,自展法会对你的样本数据进行抽样,计算出21岁以上个体的喝咖啡的人的平均身高和不喝咖啡的人的平均身高之间的差异。使用你的抽样分布,建立一个95%的置信区间。
diff_21 = []
for _ in range(10000):
    coffee_sample = sample_data.sample(200, replace = True)
    d_coffee = coffee_sample.query("age != '>21' and drinks_coffee == True")['height'].mean()
    nd_coffee = coffee_sample.query("age != '>21' and drinks_coffee == False")['height'].mean()
    diff_21.append(d_coffee - nd_coffee)
plt.hist(diff_21)
np.percentile(diff_21, 2.5), np.percentile(diff_21, 97.5)

统计显著性和实际显著性

使用置信区间和假设检验,你能够在做决策时提供 统计显著性。
然而,做决策时考虑 实际显著性 同样很重要。 实际显著性 考虑到所处情况的其他因素,假设检验或置信空间的结果可能不会直接考虑到这种情况。空间、时间 或 金钱 等约束条件对商业决定很重要。但是可能不会在统计测试中直接考虑这些因素。


置信区间的总结

十二、假设检验

概念

1、检验假设概念

检验假设概念 错误类型

2、P值

2、本章小结

总结

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.normal.html


十三、案例研究:A/B测试

1、求点击率的代码



点击率部分的代码

我们来复习下分析这个 A/B 测试结果涉及了哪些操作。

2、多个分析指标

Bonferroni 校正
Bonferroni 校正是处理多测试实验的方法之一,也就是说 Bonferroni 校正可以处理本案例多指标造成的问题。要计算新的 Bonferroni 校正显著值,我们需要让原显著值除以测试数量。

注:
一旦指标间有关联,Bonferroni 方案就显得太过保守,因此要更好地解决这个问题,我们可以用更复杂的办法,如封闭测试程序Boole-Bonferroni 联合校正 以及 Holm-Bonferroni 方案。这些都没有 Bonferroni 方案那么保守,而且会把指标间的相关性考虑在内。

如果你真的选了没那么保守的方案,请确保方案假设的确适用于你的情况,而不是在 糊弄 p 值。为了得到显著性结果而选择不适合的测试方法只会造成决策有失偏颇,长期下来会伤害到你的公司业绩。


十四、回归

1、回归
回归是常用的一种数据分析的方法,通过规定因变量和自变量来确定变量之间的因果关系,是一种建立回归模型,并根据实测数据来求解模型的各个参数,然后评价回归模型是否能够很好的拟合实测数据。

2、机器学习
机器学习 通常分为监督 和 非监督学习,而你将在本课(接下来的课程还会涉及相关扩展知识)学到的回归则是监督机器学习的范例之一。
在监督机器学习中,你要做的是预测数据标签。一般你可能会想预测交易是否欺诈、愿意购买产品的顾客或某一地区的房价。

线性回归和罗辑回归都属于监督学习

3、线性回归
在简单线性回归中,我们要对两个定量变量进行比较。
反应 变量是你想预测的变量,解释变量则是用于预测反应变量的变量,在线性回归中,通常我们会用散点图来可视化两个变量的关系,你将在接下来的各种概念中进一步了解这一点。

练习

4、散点图
散点图是比较两个定量变量的常用可视化手段。散点图常用的汇总统计是 相关系数,该系数常以 r 来表示。

虽然还有其它几种办法来衡量两个变量之间的相关性,但最常用的办法是用皮尔逊相关系数,该系数能说明 线性关系 的:

  1. 相关程度
  2. 相关方向

斯皮尔曼相关性系数则不只衡量线性关系,可能更适用于关联两个变量的场合。

5、回归线

回归线

用python拟合回归线

注意,如果电脑没有安装statsmodels库,需要安装以下

命令:
在终端输入:
pip install satamodels

在python中使用的时候,需要导入satamodels,
如下:
import satamodels.api as sm

OLS:最小二乘法
更多参考资料在这里 !!!

最小二乘法使用方法

我们可以用 Python (或其它软件) 来对线性模型的系数进行假设检验。这些测试能帮我们判断某个变量与其反应变量是否具有具统计显著性的线性关系,不过对截距进行假设检验通常没什么作用。

然而,对每个 x 变量进行假设检验,测试所涉及的两组为:总体斜率等于 0 vs. 参数不等于 0 的其它情况(对立假设)。因此,如果斜率不等于 0 (即对立假设为真),那我们就能证明与那个系数有关的 x 变量与反应变量间有具统计显著性的线性关系,也就意味着 x 变量能帮我们预测反应变量 (或者,最起码意味着模型里有 x 变量比没有好)。



决定系数 即相关系数的平方。

决定系数变量通常定义为模型中能以 x 变量解释的反应变量的变化范围。通常来说,决定系数越接近 1,模型就越拟合数据。

很多人觉得决定系数不是个很好的衡量标准 (他们可能是对的),不过我想说,我们所使用的任何衡量模型数据拟合度的方法,都可借助交叉验证来判断其准确性。这里 是一位朋友的文章,里面就用交叉验证探讨了他觉得决定系数不好的原因。

R值可变性

练习题

十五、多元线性回归

1、多元线性回归
可观看可汗学院线性代数免费课程学习线性代数相关知识。
用python求多因素的线性回归,就是把所有影响因素都加进去,分类变量会报错。

代码实操

这一部分主要是为了解释,为什么会出现这个结果,这个结果的来源是怎么求的,这部分求解我看不懂。。。。。先记下来⬇️


求解方法

2、虚拟变量
要往线性模型里添加分类变量,就需要把分类变量转变为 虚拟变量。转化后,你需要舍弃一个 虚拟列,才能得到 满秩 矩阵。
如果你要用 0 、1 编码来创建虚拟变量,你就得舍弃一个虚拟列,确保所得矩阵是满秩的(这样你从 python 里得到的解才会是可靠的。)

之所以要这么做,原因就在于线性代数的本质,更具体地说,要逆转矩阵,你手里的矩阵必须是满秩的 (也就是所有列都得线性独立),因此,你得舍弃掉一个虚拟列,方能得到线性独立的各列 (和一个满秩矩阵)。

把虚拟变量添加到线性模型中
首先需要把分类变量进行分出独立的列:

pd.get_dummies()

视频曾提到 统计学习简介 一书,其中就提到了如下五个假设:

  1. 因变量-自变量关系的非线性
  2. 误差项的相关性
  3. 非恒定方差和正态分布误差
  4. 异常值/高杠杆点
  5. 共线性


相关误差

如果我们是随时间变化来收集的数据(比如预测未来股价或利率),或数据与空间有关(如预测洪涝或干旱地区),那就很容易出现相关误差。通常,我们可以用过去数据点提供的信息(针对与时间有关的数据)或用相邻数据点提供的信息(针对与空间有关的数据)来提高预测结果。

不考虑相关误差的主要问题在于:往往你会利用这一相关性,得到更好的未来事件预测数据或空间关联事件预测数据。

要判断是否有相关误差,最常用的方法是观察收集数据的域。要是你不确定的话,你可以试试一个叫 Durbin-Watson 的检验方法,人们常用该测试来评估误差相关性是否造成问题。还有 ARIMA 或 ARMA 模型,人们常用这两个模型来利用误差相关性,以便做出更佳预测。

非恒定方差和正态分布误差

你预测的值不同,得到的预测值范围也不同,那就意味着方差不恒定。非恒定方差对预测好坏影响不大,但会导致置信区间和 p 值不准确,这种时候,在预测值接近实际值的那部分区域,系数的置信区间会太泛,而在预测值较远离实际值的区域则会太窄。

通常来说,对数函数(或使用其它反应变量的变换方式)能够 “摆脱” 非恒定方差,而要选择合适的变换方式,我们一般会用 Box-Cox

用预测值的残差图也可以评估非恒定方差。在本页底部的图片中,非恒定方差的标签为 异方差。理想来说,我们要的是一个有异方差残差的无偏模型(其异方差残差在一定数值范围内保持不变)。

虽然本文并不探讨残差的正态性,如果你想创建可靠的置信区间,正态性回归假设就十分重要了,更多相关信息详见 这里

异常值/杠杆点

异常值和杠杆点是远离数据正常趋势的点。这些点会对你的解造成很大的影响,在现实中,这些点甚至可能是错误的。如果从不同来源收集数据,你就可能在记录或收集过程中造成某些数据值出错。

异常值也可能是准确真实的数据点,而不一定是测量或数据输入错误。在这种情况下,'修复'就会变得更为主观。要如何处理这些异常值往往取决于你的分析目的。线性模型,特别是使用最小二乘法的线性模型,比较容易受到影响,也就是说,大异常值可能会大幅度地左右我们的结果。当然,异常值也有一些解决技巧,也就是我们常说的 正则化。本课不会谈及这些技巧,但在 机器学习纳米学位免费课程中,我们对这些技巧做了粗略的介绍。

而在宾夕法尼亚州立大学提供的完整回归课程里,就有特别长的篇幅在探讨杠杆点的问题,详见 这里

共线性(多重共线性)

如果我们的自变量彼此相关,就会出现多重共线性。多重共线性的一个主要问题在于:它会导致简单线性回归系数偏离我们想要的方向。

要判断是否有多重共线性,最常见的办法是借助二变量图或 方差膨胀因子 (即 VIFs)。下一概念我们就要更深入地探讨多重共线性,因而在此不做赘述。



(本节完)

多重共线性与VIF

#查看多个变量间的关系
import seaborn as sb
sb.pairplot(df[['变量1','变量2','变量3']])

VIF



4、特征工程与特征选择
Sebastian 和 Katie 讲授的 这个机器学习 课程是个很好的学习途径,能帮你更好地理解许多概念,也对你接下来更深入地理解机器学习很有帮助。

填充缺失数据


交叉验证
概念 k 折交叉验证由 Sebastian 的视频讲解,这也属于优达学城的免费课程,你可以点 这里 来学习该课程。本课由 Katie 讲授,所以有些参考不是很恰当,但他还是很好地解释了交叉验证的工作原理。

模型评估

总结

十六、逻辑回归

1、逻辑回归

逻辑回归
解释结果
指数化&倒数
这两节课涉及的一些概念可查看 机器学习纳米学位课程
精准率、召回率
精准率&召回率
公式
这里是逻辑回归 sklearn 包的相关文献,另外,这里是处理混淆矩阵的相关文献。

以上就是实用统计学的所有内容了!这两节课讲的是多元线性回归和逻辑回归,但你看到的大多数内容已经开始朝 数据科学 靠拢了,也就是说,大部分内容已经超越了多数日常 数据分析 的范畴了。不过,我希望这两节课的一些挑战给你带来了愉快的体验。

这两节课初步介绍的两种办法——多元线性回归和逻辑回归,只是监督机器学习的一部分。你可以从优达学城免费课程中了解更多,又或者可以在机器学习纳米学位课程 中查看项目回顾以及优达学城的社区信息。

在本课中,我们学习了逻辑回归,你学到了:

  1. 如何使用 python 来实现逻辑回归,用 statsmodels 和 sklearn 包来预测二元分类反应值。

  2. 如何解释 statsmodels 逻辑回归输出的系数。

  3. 如何用多个指标来评估模型效果。

  4. 如何在 python 里评估模型拟合效果。

你已经学到了很多了!恭喜你!祝你在项目中取得好成绩!

逻辑回归 课程中 抽样分布 的 notebook 方案和数据可见本页底部。

辅助材料

Practical Statistics


上一篇下一篇

猜你喜欢

热点阅读