正态分布及其可视化演示网页
一、前言
正态分布(Normal Distribution)在统计学与概率论中具有举足轻重的地位。无论是自然科学还是社会科学,很多随机现象或测量结果都呈现出或接近正态分布的形态。通过使用一个动态网页来可视化正态分布的变化,可以更加直观地理解它的核心概念与特性。
本文将先简要介绍正态分布的基本知识,然后结合一个基于 HTML + Tailwind CSS + JavaScript 的动态网页,展示如何交互式地调整参数、观察正态分布曲线的变化,以加深对正态分布的认识。
二、正态分布基础知识
-
定义与概率密度函数 (PDF)
一个随机变量 X 若服从正态分布,并记作 X ~ N(μ, σ²),则其概率密度函数为:
(1)
f(x) = 1 / (σ√(2π)) × exp( - (x - μ)² / (2σ²) )
其中- μ 为均值(mean),决定分布的中心位置
- σ 为标准差(standard deviation),决定分布的扩散程度:σ 越大,曲线越“平坦”且“分散”
-
特性
- 正态分布曲线呈“钟形”,左右对称,峰值坐落在均值 μ 处
- 多种自然或社会测量数据都能近似满足正态分布,如身高、考试成绩、误差分析等
- 在样本量足够大的情况下,由中心极限定理可知许多分布会在平均值附近收敛成正态形态
-
参数调整
- 通过改变均值 μ,可以平移整条正态分布曲线
- 通过改变标准差 σ,可以改变曲线的“胖瘦”程度:值越大,峰越低且曲线越宽;值越小,峰越高且曲线越陡峭
三、网页功能概述
为了更好地理解正态分布的形状变化,我们可以使用一个动态网页对正态分布进行可视化演示。本网页拥有以下功能:
-
均值 (μ) 调节
网页提供滑动条,使用者可在设定区间(例如 -3 到 3)内移动滑块,实时更新均值并重绘正态分布曲线。这样可以看到正态分布峰值左右平移的效果。 -
标准差 (σ) 调节
同理,也提供滑动条允许在 0.1 到 2 或其它合理区间内调整标准差。曲线在水平方向上的扩散程度会跟随 σ 值而实时改变。 -
分布曲线绘制
通过 HTML 的 元素以及 JavaScript 进行绘制:- x 轴范围通常可设置为 -5 到 5(或更大/更小),确保覆盖分布主区域
- y 轴根据分布最大值(峰值)进行动态计算,以便在画布上准确展现曲线形状
-
刻度与动态反馈
- 在 x 轴上,有对应的刻度标记,便于读者知晓当前绘制的真实数值范围
- 均值与标准差的当前数值会在网页上实时显示,让使用者直观了解参数调整情况
四、使用方法
-
打开网页
在浏览器中双击或打开本 HTML 文件,即可呈现一个简洁的界面:顶部有配置滑块,下方有绘制正态分布的画布。 -
调整均值 (μ) 和标准差 (σ)
- 将滑块从左到右拖动,页面中会相应展示当前 μ 值或 σ 值。
- 画布上绘制的曲线会随之更新。
- 注意,当 σ 值很小的时候,曲线会变得非常“高而瘦”;当 σ 值增大时,曲线则会变“矮而宽”。
-
观察分布特性
- 当 μ 改变时,观察峰值如何沿 x 轴平移。
- 当 σ 改变时,观察曲线“胖瘦”变化对概率分布的影响。
-
相应场景
- 可以想象当 μ = 0,σ = 1 时,这是标准正态分布。
- 如果把它视为某项考试成绩的理想分布,μ 就是平均分,σ 是离散程度;通过调整参数,可以了解不同情况下的整体分布形态。
五、代码简要说明
在创建这个动态网页时,主要用到了以下技术要点:
-
HTML + Tailwind CSS
- 通过 标签绘图,并使用 Tailwind CSS 布局与简易美化。
- 输入滑块(range 类型 )与文本区展示当下 μ 与 σ 的数值。
-
JavaScript
- 计算正态分布 PDF:
(2)
pdf(x, μ, σ) = (1 / (σ√(2π))) × exp( -((x - μ)²) / (2σ²) ) - 实时获取用户输入:(oninput 事件)
当滑块变动时,JS 函数会更新页面文本并重绘分布。 - 绘图:
- 设置 x 轴范围(如 -5 到 5),步长可以为 0.05 左右;对于每个 x,计算 pdf(x, μ, σ),将 (x, pdf) 转换成画布坐标并绘制折线。
- 适度添加坐标轴、刻度线与网格,使得图像更具可读性。
以下是完整代码:
- 计算正态分布 PDF:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>正态分布动态演示</title>
<!-- 引入 Tailwind CSS (开发时使用) -->
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-50 flex justify-center items-start min-h-screen p-4">
<div class="w-full max-w-xl mx-auto bg-white shadow-md rounded p-4">
<h1 class="text-xl font-bold mb-4 text-center">正态分布动态演示</h1>
<!-- 均值 (μ) 调节 -->
<label for="mean" class="block text-sm font-medium text-gray-700 mt-2"