想从事数据科学?统计学60分怎么够!
一直以来,小编都对数学有一种执念,似乎觉得只要数学好,就能走上人生巅峰。
N年后,看到数据科学发展得风生水起,并且跟数学息息相关,我暗自发誓:错过的青春和数学我都要补回来!于是勾搭了一位数学科学家,想找他开开光。他噗嗤一笑,用饱含同情的目光看着我,郑重地将《基本数学和数学科学统计教程》交到我手上。看了两页后,小编卒……
没想到,除了数学之外,想要入门数据科学,统计学也是一座必须翻过去的大山。
正如乔西·威尔斯(Josh Wills)所说:
数据学家比任何程序员都更擅长统计,也比任何统计学家都更擅长编程。一. 统计学简介
统计学是一门与数据收集、分析、解释和描述有关的数学科学。
数据学家和分析师能够在运用统计学处理现实生活中的复杂问题时,采用多种统计函数、统计原理和算法对原始数据进行分析,建立统计模型,并对结果进行推断和预测。
简单地说,统计学可以通过对数据进行数学计算,从数据中获得有意义的预测。
统计学对生活的各个领域都有影响,例如股票市场、生命科学、气象、零售、保险和教育等领域。
二. 统计学中的基本术语
在学习数据科学中的统计学时,应该了解一些关键术语:
- 总体:一系列数据的集合。
- 样本:总体的子集。
- 变量:任意可测量或计算的特征、数目、数量。也可称为数据项。
- 统计参数或总体参数:表明一个概率分布的数量值,也称为统计模型。例如,总体的平均值、中位数等。
三. 分析方法分类
任何事件均可以通过以下两种方法之一来完成分析。
- 定量分析:定量分析(统计分析)是用数字和图表收集和解释数据以识别模式和趋势的科学。
- 定性分析:定性分析(非统计分析)的目的则是提供通用信息,并使用文字、声音和其他形式的媒体来进行预测等行为。
例如,在星巴克点咖啡时,他们可以提供中杯、大杯和超大杯,这个信息就是定性分析的实例。但是如果收集到的信息是某个商店每周卖出70杯中杯咖啡,这就是定量分析,因为每周卖出的咖啡量有数据表示。
尽管两种分析方法的目的都是为了得出结果,但是定量分析能够以一目了然的方式呈现分析结果,所以它在分析学中至关重要。
四. 统计学分类
统计学中有两大类,它们分别是:
- 描述性统计
- 推断性统计
4.1 描述性统计
描述性统计指通过数值计算、图表、表格得出的数据描述总体特征。
描述性统计有利于整理数据,并关注提供参数的数据特征。
设想一下,你想要调查某个班的学生的平均身高,描述性统计要求你记录班中所有学生的身高,然后找出其中的最大值、最小值以及平均值。
4.2 推断性统计
推断性统计指根据所研究总体的数据样本对总体特征进行推断和预测。推断性统计使总体的某个大数据集一般化,并应用概率学相关知识推导结论。这类统计方法允许基于样例统计信息推断总体参数,并在此基础上构建模型。
因此,如果用推断性统计考虑“调查班级平均身高”这一相同问题,则需要先从整个班级中抽取若干样本组成一个样本集,然后将该样本集中的学生分为高个、中等和矮个后大致形成一个统计模型,最后将它扩展至整个总体,即整个班级。
接着让我们集中精力看看如何利用描述性统计解决分析问题。
五. 了解描述性分析
以图表的形式表示数据时(例如直方图、折线图等),数据是基于某种集中趋势来呈现的。集中趋势度量(平均值、中位数)和离散趋势度量可用于统计分析。为了更好地理解统计,我们通过例子来认识统计中的不同度量。
以下是含有变量的汽车样本数据集:
- 汽车
- 每加仑行驶的英里数(mpg)
- 汽缸规格(cyl)
- 位移数值(disp)
- 马力(hp)
- 实际轴比(drat)
进行下一步前,我们先定义主要的中心度量或集中趋势度量。
5.1 集中趋势度量
- 平均数:测量样本中所有值的平均值。
- 中位数:测量样本集的中心值。
- 众数:数据集中出现频率最多的数字。
你可以利用描述性方法分析样本数据集中每个变量的平均值、标准差、最小值和最大值。
- 如果想要知道全部汽车的马力平均值,要计算所有值的平均值。在这个例子中,我们要用所有辆车的马力之和,除以总的汽车数量。
- 平均值 = (110+110+93+96+90+110+110+110)/8 = 103.625
- 如果想在全部汽车总体中找到mpg的中值,需将mpg值按升序或降序排列后再取其中间值。在本例中,由于这里有八个值,即为偶数项。因此,我们应当取两个中间值的平均值。八辆车的mpg(排序后):21、21、21.3、22.8、23、23、23、23中位数 = (22.8+23 )/2 = 22.9
- 如果想找出汽车总体中最常见的气缸类型,要统计重复次数最多的气缸值。本例中有两个汽缸值,即4和6。观察一下数据集,发现重复出现次数最多的气缸值是6,因此6是众数。
5.2 离散趋势度量
除了集中趋势度量,还有离散趋势度量。
- 值域:即数据集中各值之间距离的尺度。
- 四分位间距(又称四分差,简称IQR):基于数据集分为四等份的变量测量尺度。
- 方差:描述随机变量和预期值之间的差异,由偏差的平方计算所得。
- 偏差:各数值与均值之间的差异。
- 总方差:偏差平方的均值。
- 样本方差: 样本单位变量值与其算术平均数的离差的平方的平均数。
- 标准差:计量数据集与平均值的离差程度。
了解了描述分析法背后的统计与数学之后,现在试着在R程序中运用刚刚学到的知识。
5.3 统计学在R软件中的应用
使用R软件的人越来越多的原因有许多:
- R软件是开放源代码软件,并且可以免费获得。与SAS或Matlab不同,用户可以免费安装、使用、升级、复制、修改、再开发及转售。
- R软件可实现跨平台兼容。Windows、Mac OS X和Linux系统都可使用,还可以从Microsoft Excel、Microsoft Access、MySQL、SQLite、Oracle等程序中导入数据。
- R语言是一种强大的脚本语言,可以处理大型复杂的数据集。
- R语言具有高度灵活性和进化性。统计学的许多新发展是以R语言为载体首发。
现在我们进一步学习如何利用R语言实现描述统计。
5.4 描述性统计在R软件中的应用
理解一个概念最好的方法是在实际中应用概念。本节中,将通过一个小演示展示如何计算平均值、中位数、众数、方值、标准差,以及如何通过绘制直方图研究变量。这是一个相当简单的演示,但它构成了机器学习算法的基础。
步骤一:导入计算数据
>set.seed(1) #Generate random numbers and store it in a variable called data >data = runif(20,1,10)
步骤二:计算数据的平均值
#Calculate Mean >mean = mean(data) >print(mean) [1] 5.996504
步骤三:计算数据的中位数
#Calculate Median >median = median(data) >print(median) [1] 6.408853
步骤四:计算数据的众数
#Create a function for calculating Mode >mode <- function(x) { >ux <- unique(x) >ux[which.max(tabulate(match(x, ux)))] } >result <- mode(data) >print(data) [1] 3.389578 4.349115 6.155680 9.173870 2.815137 9.085507 9.502077 6.947180 6.662026 [10] 1.556076 2.853771 2.589011 7.183206 4.456933 7.928573 5.479293 7.458567 9.927155 [19] 4.420317 7.997007 >cat("mode= {}", result) mode= {} 3.389578
步骤五:计算数据的方差&标准差
#Calculate Variance and std Deviation >variance = var(data) >standardDeviation = sqrt(var(data)) >print(standardDeviation) [1] 2.575061
步骤六:绘制直方图
#Plot Histogram >hist(data, bins=10, range= c(0,10), edgecolor='black')
直方图用于表示数据点的频数:
学习了描述性统计之后,现在一起来谈谈推断性统计。
六. 了解推断性统计
统计学家利用假设检验,对此假设应该被拒绝还是接受作出推断。假设检验是一种基本的统计推断形式,用来确定抽样研究中是否有足够的证据推断某一特定条件对总体适用。
为了研究一般总体特征,我们采取随机抽取样本并分析其样本属性。我们检验其已知的结论是否准确反映总体特征,最后解释得出的结果。是否接受假设取决于假设的发生概率。
为了更好地阐述这些,我们来看一个例子。
假设有四个男孩逃课了被抓住了,他们分别是尼克、约翰、鲍勃、哈利。因此,他们被要求留校打扫教室卫生以示惩罚。
所以,约翰决定他们四个轮流打扫教室。他想出了一个计划,即把每个人的名字写在纸条上,然后把纸条放在一个碗里。每天他们必须从碗里取一个名字,而抽出的那个人必须打扫教室。
现在发现3天过后,除了约翰没有被抽中,其他几个的名字都被抽中了。假设这个事件完全随机且没有偏见,那么约翰不作弊的概率是多少?
先计算一下一天中约翰不被抽中的概率:
P(每天约翰不被抽到) = 3/4 = 75%
概率是75%,一个相当高的概率。但是如果是三天内约翰连续不被抽中的概率降至42%。
P(3天约翰都不被抽到) = 3/4 ×3/4× 3/4 = 0.42 (保留两位小数)
现在,假设这样一个情景:约翰连续12天不被抽中。概率降至了3.2%,因此,这种情况下约翰作弊的概率就相当高了。
P(连续12天约翰都不被抽到) = (3/4) ^12 = 0.032 <0.05
统计学家为了得出结论,他们提出了阈值。考虑上面的情景,如果阈值设定为5%,这表明,如果概率低于5%,那么表明约翰为了不留校而作弊了,但是如果概率高于5%,那么约翰只是幸运地没有被抽中而已。
这个概率和假设检验引出了两个重要的概念,分别是:
- 零假设:结果与假设无异。
- 对立假设:结果证明假设是虚假的。
因此,在这个例子中,如果一个事件择发生的概率小于5%,那么它就是一个有偏事件,即它接受了对立假设。
6.1 推断性统计在R中的应用
在下述的演示中,我们将使用gapminder数据集进行假设检验。gapminder数据集包含了142个国家从1952年到2007年,每隔五年的人均预期寿命、人均GDP和人口数的相关数据。
首先,下载gapminder数据包,然后将其导入R语言环境。
#Install and Load gapminder package install.packages("gapminder") library(gapminder) data("gapminder")
现在,利用View()函数在R中查看数据集。
#Display gapminder dataset View(gapminder)
快速浏览该数据集:
接下来,加载R提供的臭名昭著的dplyr安装包。我们希望在dplyr包中使用管道(%>%)操作符。对于不知道管道操作符的人,只需要知道它能够将数据从左侧导入到管道右侧的数据中。
#Install and Load dplyr package install.packages("dplyr") library(dplyr)
下一步,就是比较两个地区(爱尔兰和南非)的平均预期寿命,并进行t检验(t-text),以检查比较是否遵循零假设或对立假设。
#Comparing the variance in life expectancy in South Africa & Ireland df1 <-gapminder %>% select(country, lifeExp) %>% filter(country == "South Africa" | country =="Ireland"
因此,在将t检验应用于数据框(df1)并比较平均预期寿命后,就会看到下面的结果:
#Perform t-test t.test(data = df1, lifeExp ~ country) Welch Two Sample t-test data: lifeExp by country t = 10.067, df = 19.109, p-value = 4.466e-09 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: 15.07022 22.97794 sample estimates: mean in group Ireland mean in group South Africa 73.01725 53.99317
爱尔兰和南非的平均预期寿命相差20岁。现在我们需要检验南非和爱尔兰平均预期寿命的差异是否实际有效,而不仅仅是偶然发生的。所以,接着进行t检验。
这里要特别注意p值(p-value),也就是概率值。涉及到确保模型的重要性时,p值是一个非常重要的衡量标准,只有当p值小于预先设定的统计显著性水平(理想情况下为0.05)时,才称该模型具有统计学意义。从输出结果中看,p值是4.466e-09,这是一个非常小的值。
在模型的简要总结中,请注意另一个重要参数t值。较大的t值表明对立假设是正确的,即人均预期寿命的差异并不完全是因为运气好而等于零。因此,在我们的例子中,零假设被拒绝。
为了对演示做总结,我们以洲为单位绘制了图表,该图表显示出每个洲的平均预期寿命是如何随着该大陆各自的人均GDP而变化。
#Plotting a gdpPercap vs lifeExp graph for each continent #Install and Load ggplot2 package install.packages("ggplot2") library(ggplot2) gapminder%>% filter(gdpPercap < 50000) %>% ggplot(aes(x=log(gdpPercap), y=lifeExp, col=continent, size=pop))+ geom_point(alpha=0.3)+ geom_smooth(method = lm)+ facet_wrap(~continent
上图中,你几乎可以看到每个大陆人均GDP与预期寿命的线性差异。这也表明R语言可以很好地用于统计分析。
……OK,fine……谁能看懂请拿走不谢,小编我……