统计学

在做数据汇报时, 如果把只是简单罗列数据, 不够直观. 这里学习怎么使用matlab函数来对数据进行统计学的处理.统计学可以分为描述统计学和推论统计学(都是我翻译的)….描述统计学旨在更好的呈现数据的内容, 推论统计学在于研究一个假设问题的成立的可能性.

描述统计学

对于下面的数据表而言, 是很难快速从中获取到关键信息的, 因此有必要对数据的呈现方式进行处理, 比如可以使用图形的方式来呈现数据.

image-20200716161959724

image-20200716162037874

图形总是比图表更加有力量, 这里再介绍几种画图的函数.

对于一组数据, 给出其频率数据 freqy=[1 0 1 0 4 0 1 0 3 1 0 0 1 1], 其中freqy(x)的数值表示数据x的出现次数, 可以分别使用下面的函数进行图形的描述.

1
2
3
4
5
x = 1:14;
freqy = [1 0 1 0 4 0 1 0 3 1 0 0 1 1];
subplot(1,3,1); bar(x,freqy); xlim([0 15]);
subplot(1,3,2); area(x,freqy); xlim([0 15]);
subplot(1,3,3); stem(x,freqy); xlim([0 15]);

对应的结果图:

image-20200716165408281

matlab中使用boxplot函数来绘制箱线图, 这个函数在前面也曾经提及过, 这里进一步介绍使用方法和箱线图的意义. 对于上面的1到14的数据, 下图中红色方框中的图形就是箱线图, 箱线图中共描述了数据的五个点, 包括最小值, 最大值, 中位数, 1/4位置的数值 和 3/4处的数值.

image-20200716170006458

1
2
3
marks = [80 81 81 84 88 92 92 94 96 97];
boxplot(marks) % 绘制箱线图
prctile(marks, [25 50 75]) % 此函数用于求 marks 数组中 百分之25,百分之50和百分之75位置处的数据.

运行结果为:

image-20200716170343169

image-20200716170356103

可以看到, 箱线图中的红线, 也就是整个数据的中位数, 数值是90, 箱线图的方框的上下边界也与prctile函数的结果相同. 从箱线图中, 我们可以清晰的看到数据的一些分布特征, 包括数据的范围, 数据曲线是否陡峭等等. 比如从上面的数据图来看, 整个数据集 在25%到75%中的数据占了整个数据的很大一部分.

matlab中可以使用skewness来计算数据曲线的偏移程度. 下图一中, 平均数小于中位数小于频率最高的数的情况计算结果为负值, 图三的情况该函数的计算结果为正值.

image-20200716171321954

1
2
3
4
5
X = randn([10 3])*3;
X(X(:,1)<0, 1) = 0; % 把第一列中小于0的数置零
X(X(:,3)>0, 3) = 0; % 把第三列中大于零的数置零
boxplot(X, {'Right-skewed', 'Symmetric', 'Left-skewed'}); % 绘制箱线图
y = skewness(X)

image-20200716172335986

image-20200716172350492

Kurtosis函数用来计算分布图线的陡峭程度. 计算结果数值越大代表越陡峭.

image-20200716172744564

1
2
3
load stockreturns; % 加载matlab的内置数据集
boxplot(stocks) % 对矩阵绘制箱线图
kurtosis(stocks) % 对每一列进行计算

image-20200716173201885

从箱线图的结果来看, 第8列和第9列的方框大小差不多, 也就是说在25%到75%之间的数值差不多, 但是第9列的整体分布范围却明显比第8列大, 因此, 直观上就可以看出 关于陡峭程度的计算结果应该是第8列小于第9列.

image-20200716173622349

绘图工作在前面课程中已经学习过, 这里给出一些数据特征的描述与计算方式, 包括的matlab函数有:

  • mean : 求数组的平均值
  • median : 求数组的中位数的值
  • mode : 求数组中出现次数最多的值
  • prctile : 数据集的百分位数
  • max : 求数组中的最大值
  • min : 求数组中的最小值
  • std : 标准差
  • var : 方差

使用方法都很简单, 此处不再赘述, 必要时可以点击超链接参考使用文档.

推论统计学

这里所说的推论统计学实际上就是概率论中的假设检验, 对于某一数据集的内容,提出一个假设问题, 有多大的概率可以接受. 这里面可能涉及置信度, 检验水平等几个专业名词, 长时间不学就忘了, 但是我自己大概知道是什么意思

接受域为1α1- \alpha, 拒绝域为α\alpha . 常用的α\alpha取值有, 0.01 0.1 0.05 等等.

计算对于一个给定数据集提出的假设能否被接受的问题, 首先应该指出接受的概率, 也就是给定α\alpha, 由此算出接受域的范围, 如果假设的数值在此范围内, 则认为有 1α1-\alpha的概率接受这个假设. 下图为α\alpha取0.05时的示意图

image-20200716175224686

此图为双侧假设检验, 还可以进行单侧假设检验, 如下图

image-20200716175853104

下面列举一些matlab的假设检验函数.

下面给出一个ttest2检验两个数据集是否来自相同均值的总体的使用示例:

1
2
3
4
5
6
load stockreturns;
x1 = stocks(:,3); x2 = stocks(:,10);
boxplot([x1, x2], {'3', '10'});
[h,p] = ttest2(x1, x2)
% 此函数两个返回值, 返回h等于0时 表示在默认的5%的显著性水平下可以接受, 返回1表示不接受
% p返回假设成立的可能性

结果图:

image-20200716181409625

image-20200716181420006

资料链接

参考视频 参考讲义