当前位置: 首页 > news >正文

自定义正态分布区间划分与可视化

引言

正态分布在统计学和数据分析中扮演着至关重要的角色。许多自然现象,如身高、智商、市场需求等,都符合正态分布。在实际应用中,我们通常希望对数据进行区间划分,以便更好地理解其分布情况。例如,在创新扩散理论中,市场用户可以根据采用新技术的时间划分为不同群体。

本文通过 MATLAB 绘制 正态分布曲线,并自定义 五个区间 进行颜色填充,以直观展示不同群体的分布情况。

1. 正态分布的定义

正态分布的概率密度函数(PDF)定义如下:

% 参数设置
mu = 0;          % 均值
sigma = 1;       % 标准差
x = linspace(mu - 4*sigma, mu + 3*sigma, 1000); % 生成 x 值
y = normpdf(x, mu, sigma); % 计算正态分布概率密度函数

2. 自定义区间划分

为了更好地可视化,我们将正态分布划分为 五个区间,并使用不同颜色填充:

  • 创新者(Innovators):小于 −3.5σ
  • 早期使用者(Early Adopters):−3.5σ 到 −2σ
  • 早期大多数(Early Majority):−2σ 到 0σ
  • 晚期大多数(Late Majority):0σ 到 2σ
  • 落后者(Laggards):大于 2σ

3. 绘制正态分布曲线

使用 plot 绘制 正态分布曲线。

4. 填充颜色

遍历 每个区间,填充相应颜色。

% 为每个区间填充颜色
for i = 1:length(edges)-1
    x_range = x(x >= edges(i) & x <= edges(i+1)); % 选取区间内 x 值
    y_range = y(x >= edges(i) & x <= edges(i+1)); % 选取对应 y 值
    
    % 绘制填充区域
    fill([x_range, fliplr(x_range)], [y_range, zeros(1, length(y_range))], ...
        colors{i}, 'EdgeColor', 'none', 'FaceAlpha', 0.6);
end

5. 图形美化

为了让图表更加美观,我们:

  • 隐藏坐标轴
  • 移除边框
  • 关闭网格
  • 设置标题
  • matlab代码:
% 参数设置
mu = 0;          % 均值
sigma = 1;       % 标准差
x = linspace(mu - 4*sigma, mu + 3*sigma, 1000); % 生成x值
y = normpdf(x, mu, sigma); % 计算正态分布概率密度函数

% 自定义分界点(均值前3段,均值后2段,越靠近均值区间越长)
edges = [-4, -3.5, -2, 0, 2, 4]; % 分界点设置

% 定义五种颜色(RGB格式)
colors = {...
    [250, 215, 183]/255, ...  % 浅绿色
    [243, 181, 171]/255, ...  % 浅蓝色
    [238, 156, 163]/255, ...  % 浅黄色
    [231, 128, 158]/255,...
    [211, 110, 158]/255};     % 浅紫色

% 创建图形
figure;
hold on;
plot(x, y, 'k', 'LineWidth', 2); % 绘制黑色曲线

% 为每个区间填充颜色
for i = 1:length(edges)-1
    x_range = x(x >= edges(i) & x <= edges(i+1)); % 区间内x值
    y_range = y(x >= edges(i) & x <= edges(i+1)); % 对应y值
    
    % 绘制填充区域
    fill([x_range, fliplr(x_range)], [y_range, zeros(1,length(y_range))], ...
        colors{i}, 'EdgeColor', 'none', 'FaceAlpha', 0.6);
end

% 美化图形设置
set(gca, 'XTick', [], 'YTick', []);    % 隐藏坐标数值
set(gca, 'XColor', 'none', 'YColor', 'none'); % 隐藏坐标轴线
box off;                               % 移除边框
grid off;                              % 关闭网格
title('Custom Normal Distribution Segmentation', 'FontSize', 12, 'FontWeight', 'bold')

% 添加图例
legend_labels = {'创新者', '早期使用者', '早期大多数', ...
                 '晚期大多数', '落后者'};
h = zeros(5,1);
for i = 1:5
    h(i) = fill(NaN, NaN, colors{i}, 'DisplayName', legend_labels{i});
end
legend(h, 'Location', 'northeast', 'Box', 'off');

相关文章:

  • 蓝桥试题:混境之地(记忆化搜索)
  • html中几个符号的转义和还原
  • 【竞技宝】CS2-EPLS21:SAW击败M80晋级正赛!
  • LeetCode - 26 删除有序数组中的重复项
  • 解压小游戏“动态禅意沙画“
  • VSCode详细安装步骤,适用于 Windows/macOS/Linux 系统
  • ES 分布式搜索引擎【一】
  • Nest系列:从环境变量到工程化实践-2
  • 大模型管理工具:LLaMA-Factory
  • 深入理解C++ stl::list 底层实现+模拟实现
  • 多线程与异步任务处理(二):Kotlin协程
  • 深入解析EfficientNet:高效深度学习网络与ResNet的对比(使用keras进行代码复现,并使用cifar10数据集进行实战)
  • 小型充气泵方案:充气泵pcba结构组成
  • Chrome扩展background.js访问剪贴板指南
  • 文本处理Bert面试内容整理-BERT的预训练任务是什么?
  • VulnHub-FristiLeaks_1.3靶机-信息泄露图片base加解密+文件上传+反向shel
  • Qt命名规范制-name() or getName()
  • springboot宠物服务系统-计算机毕业设计源码29146
  • 计算机毕业设计SpringBoot+Vue.js网上服装商城(源码+文档+PPT+讲解)
  • 在 Ubuntu 系统 22.04 上安装 Docker
  • 如何构思公司网站/合肥百度快速排名优化
  • 刚注册在域名可以自己做网站吗/b站视频怎么快速推广
  • 拿网站的文章做外链/广州seo全网营销
  • 调查队网站建设/拉新app推广平台排名
  • 做网站先做首页/百度联系电话多少
  • 东莞加盟网站建设/公司软文