### 数理统计MATLAB实用练习知识点解析 #### 一、茎叶图绘制——`Leaf.m` **知识点**: - **茎叶图的概念**:茎叶图是一种用来展示数据分布情况的图表,它能够清晰地展示数据的具体数值以及分布特征。在茎叶图中,“茎”代表的是数据的主要部分(通常是高位数),“叶”则是数据的小数部分或低位数。 - **MATLAB中的茎叶图绘制方法**:通过将数据分为“茎”和“叶”两部分,并利用`fprintf`函数输出到文本文件中。这里使用了`mod`函数来获取数据的小数部分(即“叶”),使用减法来获取高位数(即“茎”)。然后遍历数据,将相同的“茎”值的数据“叶”部分进行归类,并输出到文本文件。 **代码详解**: ```matlab q1_sample = data; % 假设data为待处理的数据 leaf = mod(q1_sample, 100); % 获取小数部分 stem = q1_sample - leaf; % 获取高位数 stem_u = unique(stem); % 获取唯一的“茎”值 m = numel(stem_u); % 计算不同的“茎”的数量 fid = fopen('stemleaf.txt', 'w'); % 打开文件,准备写入 for i = 1:m k = find(stem == stem_u(i)); % 查找相同“茎”的索引 n = numel(k); % 计算每个“茎”的出现次数 fprintf(fid, num2str(stem_u(i))); % 输出“茎” fprintf(fid, '|'); % 分隔符 for j = 1:n fprintf(fid, num2str(leaf(k(j)))); % 输出“叶” if j ~= n fprintf(fid, ','); % 分隔符 end end fprintf(fid, '\n'); % 换行 end fclose(fid); % 关闭文件 ``` #### 二、累积频数图绘制——`Lei_ji.m` **知识点**: - **累积频数图的概念**:累积频数图用于展示某一数值以下的数据量的累积变化情况,可以直观地反映数据分布趋势。 - **MATLAB中的累积频数图绘制方法**:首先加载数据,定义区间范围,然后通过循环计算每个区间内的数据量,并进行累加,最后绘制累积频数图。 **代码详解**: ```matlab load('数理数据.mat', 'new_data'); % 加载数据 y = [10000000]; % 初始化累积频数数组 x = 60:5:100; % 定义区间范围 data = new_data; % 使用加载的数据 begin = 60; % 起始区间 t = 5; % 区间长度 lei_ji = 0; % 累积频数初始化 % 循环计算每个区间的数据量 for i = 2:length(data) for m = 1:8 if data(i) <= begin + m * t y(m + 1) = y(m + 1) + 1; break; end end end % 累加累积频数 for i = 1:length(y) y(i) = y(i) + lei_ji; lei_ji = y(i); end % 绘制累积频数图 plot(x, y); ``` #### 三、频数与频率计算——`Tabulate.m` **知识点**: - **频数与频率的概念**:频数是指数据集中某个特定值出现的次数;频率则是指某一个数值出现的次数占总次数的比例。 - **MATLAB中计算频数与频率的方法**:加载数据,计算每个唯一数值出现的频数,进而计算频率。 **代码详解**: ```matlab load('数理数据.mat', 'originalCopy'); % 加载数据 stem = originalCopy(:, 1); % 使用加载的数据 s = numel(stem); % 总数据量 stem_u = unique(stem); % 不同数值 m = numel(stem_u); % 不同数值的数量 fid = fopen('stemleaf.txt', 'w'); % 打开文件,准备写入 % 输出表头 fprintf(fid, '数值 频数 频率\n'); % 循环计算每个不同数值的频数与频率 tu = zeros(1, m); for i = 1:m k = find(stem == stem_u(i)); % 查找相同数值的索引 n = numel(k); % 计算频数 tu(i) = n; l = double(n / s); % 计算频率 fprintf(fid, '%s %d %f\n', num2str(stem_u(i)), n, l); % 输出结果 end disp(tu); % 显示频数 fclose(fid); % 关闭文件 ``` #### 四、卡方分布概率计算——`Ji_fen.m` **知识点**: - **卡方分布的概念**:卡方分布是一种连续型概率分布,常用于假设检验等统计分析中。 - **MATLAB中卡方分布概率计算方法**:定义卡方分布的概率密度函数,通过积分计算在一定区间内的概率。 **代码详解**: ```matlab y = '(1/sqrt(2*pi*17))*exp(-(x-90).^2/34)'; % 卡方分布的概率密度函数 min = -17 * 10000; % 负无穷大的近似值 z = zeros(21, 1); % 初始化概率数组 z(1) = quadl(inline(y), min, 80); % 第一个概率 % 计算其余概率 for i = 1:19 s1 = quadl(inline(y), min, 79 + i); s2 = quadl(inline(y), min, 80 + i); z(i + 1) = s2 - s1; end total = sum(z); % 概率总和 z(21) = 1 - total; % 最后一个概率 disp(z); % 显示所有概率 ``` #### 五、经验分布函数图像绘制——`Experience.m` **知识点**: - **经验分布函数的概念**:经验分布函数是一种用于展示数据实际分布情况的工具,能够直观地反映数据的累积分布情况。 - **MATLAB中经验分布函数图像绘制方法**:加载数据,计算每个不同数值的频数与频率,再绘制累积分布图。 **代码详解**: ```matlab load('数理数据.mat', 'new_data'); % 加载数据 a = new_data; % 使用加载的数据 x = unique(a); % 不同数值 lei_ji = 0; % 累积频率初始化 k = []; % 初始化数组 y1 = zeros(1, length(x)); % 初始化频数组 % 计算频数 for i = 1:length(x) k = find(a == x(i)); % 查找相同数值的索引 y1(i) = numel(k); % 计算频数 end y = y1 ./ 100; % 计算频率 lei_ji = 0; % 累积频率初始化 % 累积频率 for i = 1:length(y) y(i) = y(i) + lei_ji; lei_ji = y(i); end % 绘制经验分布函数图像 plot(x, y); ``` 以上五个知识点涵盖了从数据的基本统计分析到较为复杂的概率计算及分布展示,通过这些练习可以加深对数理统计原理的理解,并熟练掌握MATLAB在统计分析中的应用技巧。
- 粉丝: 37
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助