% 计算一组离散数据的标准偏差和中位数。
% 我们假设数据是以频数或数据点数量给出。作为例子,我们再次以办公室雇员为例
% 子,我们取得每个年龄的雇员数量。假设他们是:
% 2 个雇员的年龄是 17
% 1 个雇员的年龄是 18
% 3 个雇员的年龄是 21
% 1 个雇员的年龄是 24
% 1 个雇员的年龄是 26
% 4 个雇员的年龄是 28
% 2 个雇员的年龄是 31
% 1 个雇员的年龄是 33
% 2 个雇员的年龄是 34
% 3 个雇员的年龄是 37
% 1 个雇员的年龄是 39
% 2 个雇员的年龄是 40
% 3 个雇员的年龄是 43
% 我们要做的第一件事是创建一个绝对频数数据数组,这就是我们在前一节中使用的数组
% N(j)。这一次我们会有每个年龄的入口,所以我们把所给年龄没有雇员的地方设为 0。我们
% 把绝对频数称为 f_abs:
f_abs = [2, 1, 0, 0, 3, 0, 0, 1, 0, 1, 0, 4, 0, 0, 2, 0, 1, 2, 0, 0, 3, 0, 1, 2, 0, 0, 3];
% 我们把数据“装”在一起,所以我们定义一个 bin width(We are “binning” the data, so let’s
% define a bin width)。由于我们是以一岁一岁度量的,我们把 bin width 设为 1:
binwidth = 1;
% 我们创建一个数组表示 17 到 43 之间的年龄,binwidth 是 1。
bins = [17:binwidth:43]; %bins=[17,43];
% 现在我们收集未加工的数据,使用 for 循环遍历所有数据,重新构建数组如下:
raw = [];
for i = 1:length(f_abs)
if f_abs(i) > 0
new = bins(i)*ones(1,f_abs(i)); %ones(a,b)创建一行两列单位向量
else
new = [];
end
raw =[raw,new]; %数组的创建/拼接
end
% 这个循环所做的就是创建一个数组,按频率重复每个元素。运行得:raw =
Columns 1 through 21
17 17 18 21 21 21 24 26 28 28 28 28 31 31 33 34 34 37 37 37 39
Columns 22 through 26
40 40 43 43 43ave = mean(raw) %平均数
ave =
30.7308md = median(raw) %中位数
82
md =
31sigma = std(raw) %标准偏差
sigma =
8.3836
注:标准差也被称为标准偏差,标准差(Standard Deviation)描述各数据偏离平均数的距离(离均差)的平均数,它是离差平方和平均后的方根,用σ表示。标准差是方差的算术平方根。
数组对应位置的重构,这个基础问题我好久都不知道如何下手 今天终于看到了,感谢这本教材,真的特别特别好。