概率论与统计学
概率论是统计学的基础,统计学冲锋在应用第一线,概率论提供武器。
我们在学习R的时候,会做过假设检验。做假设检验的时候会有一个基本的技术就是构造出统计量,这些统计量要满足一定的概率密度分布,然后我算这个统计量的值,来判定它在这个密度分布里面,分布在哪个区域,出现在这个区域内的可能性有多高,如果可能性太低,我们就判定我们的假设检验是不成立的。 那么如何构造这个统计量,这是一个很有技术的东西,同时也是由数学家来完成的,那这个工作就是概率论所作的事情。
古典概率论: 扔硬币,正面1/2反面1/2,扔的次数之间是相互独立的。 但是这个等概率事件确实是一个不是很严谨的事情。仔细想一想其实是很有趣的。 柯尔莫哥洛夫创建现代概率论 他将概率论提出了许多公理,因此将概率论变成了非常严谨的一门学科。
学会和运用概率,会使人变得聪明,决策更准确。
统计学: 统计学可以分为:描述统计学与推断统计学 描述统计学:使用特定的数字或者图表来体现数据的集中程度和离散程度。比如:每次考试算的平均分,最高分,各个分数段的人数分布等,也是属于描述统计学的范围。 推断统计学:根据样本数据推断总体数据特征。比如:产品质量检查,一般采用抽样检测,根据所抽样本的质量合格率作为总体的质量合格率的一个估计。 统计学的应用十分广泛,可以说,只要有数据,就有统计学的用武之地。目前比较热门的应用:经济学,医学,心理学,IT行业大数据方面等。
第一节:均值,中位数,众数,方差,标准差与常见的统计图表
集中趋势
例如:对于 1 2 3 4 5 这组数据,你会使用哪个数字作为代表呢? 答案是3。 因为3是这组数据的中心。 对于一组数据,如果只容许使用一个数字去代表这组数据,那么这个数字应该如何选择???-----选择数据的中心,即反映数据集中趋势的统计量。 集中趋势:在统计学里面的意思是任意种数据向中心值靠拢的程度。它可以反映出数据中心点所在的位置。 我们经常用到的能够反映出集中趋势的统计量: 均值:算数平均数,描述平均水平。 中位数:将数据按大小排列后位于正中间的数描述,描述中等水平。 众数:数据种出现最多的数,描述一般水平。
均值
均值:算数平均数 例如:某次数学考试种,小组A与小组B的成员成绩分别如下: A:70,85,62,98,92 B:82,87,95,80,83 分别求出两组的平均数,并比较两组的成绩。
mean(c(70,85,62,98,92))
81.4
mean(c(82,87,95,80,83))
85.4
组B的平均分比组A的高,就是组B的总体成绩比组A高。
中位数
中位数:将数据按大小顺序(从大到小或者从小到大)排列后处于中间位置的数。 例如:58,32,46,92,73,88,23 1.先排序:23,32,46,58,73,88,92 2.找出中间位置的数23,32,46,58,73,88,92 如果数据中是偶数个数,那么结果会发生什么改变? 例如:58,32,46,92,73,88,23,63 1.先排序:23,32,46,58,63,73,88,92 2.找出处于中间位置的数:23,32,46,58,63,73,88,92 3.若处于中间位置的数据有两个(也就是数据的总个数为偶数时),中位数为中间两个数的算数平均数:(58+63)/2=60.5 在原数据中,四个数字比60.5小,四个数字比60.5大。
众数
众数:数据中出现次数最多的数(所占比例最大的数) 一组数据中,可能会存在多个众数,也可能不存在众数。 1 2 2 3 3 中,众数是2 和 3 1 2 3 4 5 中,没有众数 1 1 2 2 3 3 4 4 中,也没有众数 只要出现的频率是一样的,那么就不存在众数 众数不仅适用于数值型数据,对于非数值型数据也同样适合 {苹果,苹果,香蕉,橙子,橙子,橙子,橙子,桃子}这一组数据,没有什么均值中位数科研,但是存在众数---橙子。 但是在R语言里面没有直接计算众数的内置函数,不过可以通过统计数据出现的频率变相的去求众数。
xdata <- c(2,4.4,3,3,2,2.2,2,4)
table(xdata)
xdata
2 2.2 3 4 4.4
3 1 2 1 1
#因此众数就是2
下面比较一下均值,中位数,众数三个统计量有什么优点和缺点 [图片上传失败...(image-57f18-1586015539906)]
均值: 优点:充分利用所有数据,适用性强,缺点:容易受到极端值影响 中位数: 优点:不受极端值影响,缺点:缺乏敏感性 1,2,3 0 2 10. 虽然中位数都是2,但是整体数据分布已经不同。 众数: 优点:当数据具有明显的集中趋势时,代表性好,不受极端值影响 缺点:缺乏唯一性,可能有一个,可能有两个,可能一个都没有 1 2 3 4 5 就没有众数出现。
例子: 两个公司的员工及薪资构成如下: A:经理1名,月薪100000;高级员工15名,月薪10000;普通员工20名,月薪7500 B:经理1名,月薪20000;高级员工20名,月薪11000;普通员工15名,月薪9000 请比较两家公司的薪资水平。若只考虑薪资,你会选择哪一家公司?
均值
A (100000+15*10000+20*7500)/36 = 11111.1
B (20000+20*11000+15*9000)/36 = 10416.67
中位数
A 7500 B 11000
众数
A 7500 B 11000
若从均值的角度考虑,明显地A公司的平均月薪比B公司的高,但是A公司存在一个极端值,大大地拉高了A公司的均值,这时只从均值考虑明显不太科学。从中位数和众数来看,B公司的薪资水平比较高,若是一般员工,选择B公司显得更加合理。
离散程度的描述
比较下面两组数据: A: 1 2 5 8 9 B: 3 4 5 6 7 两组数据的均值都是5,但是你可以看出B组的数据与5更加接近。但是有描述集中趋势的统计量不够,需要有描述数据的离散程度的统计量。
极差
极差:最大值 - 最小值,简单地描述数据的范围大小。 A: 9 - 1 = 8 B: 7 - 3 = 4 同样的5个数,A的极差比B的极差要大,所以也比B的要分散 但是只用极差这个衡量离散程度也存在不足 比如: A: 1 2 5 8 9 B: 1 4 5 6 9 两组数据虽然极差都是相同的,但是B组数据整体分布上更加靠近5。
#在R语言中也可以求极差
range(c(1,2,5,8,9))
1 9
max(c(1,2,5,8,9))
9
min(c(1,2,5,8,9))
1
tmp <- max(c(1,2,5,8,9)) - min(c(1,2,5,8,9))
tmp
8
方差
方差:在统计学上,更常地是使用方差来描述数据的离散程度:数据离中心越远,越离散。 方差越大,就代表这组数据越离散。
在R语言中可以直接计算方差 var()
var(c(1,2,5,8,9))
12.5
var(c(1,4,5,6,9))
8.5
方差越大,就代表这组数据越离散。
标准差
对于前面的数据 1 2 5 8 9,前面求的一组数据的方差是12.5。 将12.5于原始数据进行比较,可以看出12.5比原数据都大,这是否就能说明这一组数据十分离散呢? 其实方差与元数据的单位是不一样的,这样比较也是毫无意义的。如果原始数据的单位是m的话,那么方差的单位就是m^2 为了保持单位的一致性,我们引入一个新的统计量:标准差 标准差:sqrt(var()), 有效地避免了因为单位的平方而引起的度量问题。 与方差一样,标准差的值越大,表示数据越分散。 A: 1 2 5 8 9 B: 3 4 5 6 7
在R中可以直接计算标准差sd()
sd(c(1,2,5,8,9))
3.535534
sd(c(3,4,5,6,7))
1.1581139
#与方差一样,标准差的值越大,表示数据越分散。
直方图
某班40个学生某次数学检测的成绩如下:
63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77 对于这一组数字,你能看出什么呢? 或许先算一算平均值,中位数,或者众数
>mean(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
76.60526
median(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
77.5
table(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
53 61 63 65 67 69 70 71 74 75 76 77 78
2 2 1 1 2 3 2 1 1 2 1 1 1
79 81 82 84 85 86 87 88 89 90 91 94 95
1 4 1 1 1 1 3 1 1 1 1 1 1
或许算一算这组数据的方差或者标准差
>var(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
118.1913
sd(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
10.87158
但是即便是统计了上述的数据,我们还是对全班同学的分数分布,没有一个全面的了解。 原始数据太杂乱无章,难以看出规律性,只依赖数字来描述集中趋势与离散程度让人难以对数据产生直观地印象,这是我们就需要用到图标来展示这些数字。
直方图的绘制
1.找出上面数据中的最大值和最小是,确定数据的范围。
min(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
53
max(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
95
将成绩排序后很容易得到最大值是95,最小值是53
>sort(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
[1] 53 53 61 61 63 65 67 67 69 69 69
[12] 70 70 71 74 75 75 76 77 78 79 81
[23] 81 81 81 82 84 85 86 87 87 87 88
[34] 89 90 91 94 95
2.整理数据,将数据按照成绩分为几个组。成绩按照一般50-60,60-70,70-80,80-90,90-100这几个分段来划分(一般都分为5-10组),然后统计这几个分段内部的频数。 可以看到80-90这个分段的人数是最多的。 注意在绘制直方图的时候,一定要知道是左闭右开还是左开右闭。 因为这个可能会直接影响到频数的统计。
#在R中可以直接绘制直方图
hist(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
#hist()的参数breaks =5 breaks=10
#设置直方图的组距
上图就是:频数直方图。频数作为纵坐标,成绩作为横坐标。通过直方图我们可以对成绩有一个非常直观的印象。 除了频数直方图,还有一种直方图:频率直方图。与频数直方图相比,频率直方图的纵坐标有所改变,使用了频率/组距。 频率=频数/总数;组距就是分组的极差,这里的组距是10.
箱线图
除了直方图外,画一个简单的箱线图也可以大致看出数据的分布。
#R语言种可以绘制箱线图
boxplot(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
想要看懂箱线图,必须要学习一些箱线图专业的名词: 下四分位数:Q1,将所有的数据按照从小到大的顺序排序,排在第25%位置的数字。 上四分位数:Q3,将所有的数据按照从小到大的顺序排序,排在第75%位置的数字。 四分距:IQR,等于Q3-Q1,衡量数据离散程度的一个统计量。 异常点:小于Q1-1.5IQR或者大于Q3+1.5IQR的值。 (注意是1.5倍的IQR) 上边缘:除异常点以外的数据中的最大值 下边缘:除异常点以外的数据种的最小值
#R语言中有直接统计四分位数(IQR)的函数
IQR(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
16.75
#R语言中也有可以统计箱线图分布的函数
quantile(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
0% 25% 50% 75% 100%
53.00 69.00 77.50 85.75 95.00
#quantile()得到的结果分别是最小值,下四分位数,中位数,上四分位数,最大值。
85.75 - 69.00
16.75
茎叶图
茎叶图可以在保留全部数据信息的情况下,直观地显示出数据的分布情况。 左边是茎,右边是叶。 若将茎叶图旋转90度,则可以得到一个类似于直方图的图。跟直方图一样,也可以直观地知道数据的分布情况。 并且可以保留所有的数据信息。 茎叶图的画法也非常的简单: 将数据分为茎和叶两部分,这里的茎是指十位上的数字,叶是指给上的数字。 将茎部份(十位)从小到大,从上到下写出来 相对于各自的茎,将同一茎(十位)从小到大,从左往右写出来。
#R语言也可以绘制茎叶图
stem(c(63,84,91,53,69,81,61,69,78,75,81,67,76,81,79,94,61,69,89,70,70,87,81,86,90,88,85,67,71,82,87,75,87,95,53,65,74,77))
The decimal point is 1 digit(s) to the right of the |
5 | 33
5 |
6 | 113
6 | 577999
7 | 0014
7 | 556789
8 | 111124
8 | 5677789
9 | 014
9 | 5
但是茎叶图也有缺陷,因为百位和十位同时画在茎叶图的时候,容易区分不开。同时也可能出现却叶的情况。
折线图
以时间作为横坐标,变量作为纵坐标,反映变量随时间推移的变化趋势。
#R语言可以绘制折线图
plot()
dose <- c(20,30,40,45,50)
drugA <- c(16,20,27,40,60)
plot(dose,drugA,type="l")
柱状图
#R语言可以绘制柱状图
barplot()
library(vcd)
counts <- table(Arthritis$Improved)
barplot(counts)
显示一段时间内的数据变化或者显示各项之间的比较情况。
饼图
根据各项所占百分比决定在饼图中扇形的面积。简单易懂,通俗明了。可以更加形象地看出各个项目所占的比例大小。 适当的运用一些统计图表,可以更生动形象的说明,不再只是纯数字的枯燥描述。
#R语言也可以绘制饼图
pie()
slices <- c(10,12.4,16,8)
pie(slices)
学习链接:https://www.bilibili.com/video/BV1Ut411r7RG