数理统计中的卡方分布,t分布和F分布

本文深入探讨了统计学中的三大抽样分布——卡方分布、t分布和F分布,详细介绍了它们的定义、性质及其在正态总体样本均值和样本方差分布中的应用。文章还讲解了如何基于这些分布进行区间估计和假设检验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有很多统计推断是基于正态分布的假设,以标准正态分布变量为基石而构造的三个著名统计量在实际中有广泛的应用,这是因为这三个统计量不仅有明确背景,而且其抽样分布的密度函数有显式表达式,它们被称为统计中的“三大抽样分布”。这三大抽样分布即为著名的卡方分布,t分布F分布

1 卡方分布

1.1 定义

1.2 性质

2 t分布

2.1 定义

2.2 性质

3 F分布

3.1 定义

3.2 性质

4 正态总体样本均值和样本方差的分布

4.1 正态变量线性函数的分布​

4.2 正态变量样本均值和样本方差的分布

5 几个重要推论

6 总结

 



1 卡方分布

1.1 定义

设随机变量 X 是自由度为 n 的 χ2 随机变量, 则其概率密度函数为

\Gamma(\cdot )表示的是一个gamma函数,它是整数k的封闭形式。gamma函数的介绍如下伽马函数的总结

\chi _{n}^{2} 的密度函数 g_{n}(x) 形状如下图

\chi _{n}^{2}密度函数的支撑集 (即使密度函数为正的自变量的集合) 为(0, +∞), 从上图可见当自由度 n 越大, \chi _{n}^{2} 的密度曲线越趋于对称, n
越小, 曲线越不对称. 当 n = 1, 2 时曲线是单调下降趋于 0. 当 n ≥ 3时曲线有单峰, 从 0 开始先单调上升, 在一定位置达到峰值, 然后单下降趋向于 0。

若 X ∼ \chi _{n}^{2}, 记 P(x> c)=\alpha,则 c=\chi _{n}^{2}(\alpha ) 称为 \chi _{n}^{2} 分布的上侧 \alpha 分位数, 如下图所示。当\alphan 给定时可查表求出 \chi _{n}^{2}(a) 之值,如\chi _{10}^{2}(0.01)=23.209\chi _{5}^{2}(0.05)=12.592 等。

1.2 性质

χ2 变量具有下列性质:


2 t分布

说起t分布,首先要提一句u分布,正态分布(normal distribution)是许多统计方法的理论基础。正态分布的两个参数μ和σ决定了正态分布的位置和形态。为了应用方便,常将一般的正态变量X通过u变换[(X-μ)/σ]转化成标准正态变量u,以使原来各种形态的正态分布都转换为μ=0,σ=1的标准正态分布(standard normaldistribution),亦称u分布。根据中心极限定理,通过抽样模拟试验表明,在正态分布总体中以固定 n 抽取若干个样本时,样本均数的分布仍服从正态分布,即N(μ,σ)。所以,对样本均数的分布进行u变换,也可变换为标准正态分布N (0,1)

由于在实际工作中,往往σ(总体方差)是未知的,常用s(样本方差)作为σ的估计值,为了与u变换区别,称为t变换统计量t 值的分布称为t分布

2.1 定义

设随机变量 T ∼ t_{n}, 则其密度函数为

该密度函数的图形如下

t_{n}的密度函数与标准正态分布 N(0, 1) 密度很相似, 它们都是关于原点对称, 单峰偶函数, 在 x = 0 处达到极大. 但 t_{n} 的峰值低于
N(0, 1) 的峰值, t_{n} 的密度函数尾部都要比 N(0, 1) 的两侧尾部粗一些. 容易证明:

此处 \varphi (x)N(0, 1) 变量的密度函数。

若T ∼ t_{n},记P(\left | T \right |> c)=\alpha,则c={t_{n}}(\alpha /2)为自由度为nt分布的双侧\alpha分位数(如上图所示). 当给定 \alpha 时, {t_{n}}(\alpha ), {t_{n}}(\alpha /2)
等可通过查表求出. 例如 {t_{12}}(0.05)=1.782 ,{t_{9}}(0.025)=2.262等。

t 分布是英国统计学家 W.S. Gosset 在 1908 年以笔名 Student发表的论文中提出的, 故后人称为 “学生氏 (Student) 分布” 或 “t
布”。

2.2 性质

t 变量具有下列的性质:


3 F分布

3.1 定义

若随机变量 Z ∼F_{m,n}, 则其密度函数为

自由度为 m, n F 分布的密度函数如下图:

 

注意 F 分布的自由度 m n 是有顺序的, 当 m\neq n时, 若将自由度 m n 的顺序颠倒一下, 得到的是两个不同的 F 分布. 从上图
可见对给定 m = 10, n 取不同值时f_{m,n}(x) 的形状, 我们看到曲线是偏态的, n 越小偏态越严重。

若 F ∼ F_{m,n}, 记 P(F> c)=\alpha, 则 c=F_{m,n}(\alpha ) 称为 F 分布的上侧 \alpha 分位数 (见上图). 当 m, n\alpha 给定时, 可以通过查表求出
F_{m,n}(\alpha )之值, 例如F_{4,10}(0.05)=3.48,F_{10,15}(0.01)=3.80 等. 在区间估计和假设检验问题中常常用到.

3.2 性质

F 变量具有下列的性质:

以上性质中 (1) 和 (2) 是显然的, (3) 的证明不难. 尤其性质 (3)在求区间估计和假设检验问题时会常常用到. 因为当 α 为较小的数,
如 α = 0.05 或 α = 0.01, m, n 给定时, 从已有的 F 分布表上查不到 F_{m,n}(1-0.05)F_{m,n}(1-0.01) 之值, 但它们的值可利用性质(3) 求得, 因为 F_{n,m}(0.05)F_{n,m}(0.01) 是可以通过查 F 分布表求得的.


4 正态总体样本均值和样本方差的分布

为方便讨论正态总体样本均值和样本方差的分布, 我们先给出正态随机变量的线性函数的分布.

4.1 正态变量线性函数的分布

4.2 正态变量样本均值和样本方差的分布

下述定理给出了正态变量样本均值和样本方差的分布和它们的独立性.


5 几个重要推论

下面几个推论在正态总体区间估计和假设检验问题中有着重要应用.


6 总结

数据在使用前要注意采用有效的方法收集数据, 如设计好抽样方案, 安排好试验等等. 只有有效的收集了数据, 才能有效地使用数据,开展统计推断工作.获得数据后, 根据问题的特点和抽样方式确定抽样分布, 即统计模型. 基于统计模型, 统计推断问题可以按照如下的步骤进行:

  1. 确定用于统计推断的合适统计量;
  2. 寻求统计量的精确分布; 在统计量的精确分布难以求出的情形,可考虑利用中心极限定理或其它极限定理找出统计量的极限分布.
  3. 基于该统计量的精确分布或极限分布, 求出统计推断问题的精确解或近似解.
  4. 根据统计推断结果对问题作出解释

其中第二步是最重要, 但也是最困难的一步. 统计三大分布及正态总体下样本均值和样本方差的分布, 在寻求与正态变量有关的统计量精确分布时, 起着十分重要作用. 尤其在求区间估计和假设检验问题时可以看得十分清楚

 

<think>好的,用户想找LeetCode热门100题的C++解决案。我需要先确定用户的具体需求,是不是需要具体的题目解答,比如算法思路、代码示例或者优化法。用户提到的引用内容中有几个代码示例,比如二进制求、数组旋转、子数组能被K整除等,这些可能是top100中的题目。 首先,我应该整理LeetCode top100题中常见的题目类型,比如数组、字符串、动态规划、树、链表等。然后,根据用户提供的引用内容,看看是否有对应的题目可以举例。例如,引用1中的二进制求是LeetCode第67题,属于字符串处理;引用2中的数组旋转是第189题,涉及数组操作;引用3的子数组能被K整除是第974题,用到了前缀哈希表;引用4可能涉及图的最短路径问题,比如第743题。 接下来,我需要确保提供的代码示例符合用户要求,使用C++编写,并且是top100中的题目。可能需要确认每个引用对应的题目是否在top100列表中,但根据常见情况,像两数之、反转链表、二叉树遍历等都属于高频题。 用户可能需要每个题目的简要思路代码示例,同时生成相关问题。例如,对于快速排序,用户示例中提供了代码相关问题,这里需要类似的结构。需要注意的是,用户要求回答结构清晰,逐步解决问题,所以需要分步骤讲解每个题目的解决法,并附上代码。 另外,引用内容中的代码需要注意格式是否正确,比如引用1中的二进制求代码是否有语法错误,是否需要调整。例如,代码中的循环条件字符串操作是否正确,是否有转义字符的问题。不过用户提供的代码可能存在一些HTML转义字符,比如<>,需要转换为<>,确保代码可读性。 最后,生成相关问题时要围绕每个题目的常见疑问,比如时间复杂度、优化法、应用场景等。例如,对于数组旋转问题,可以问如何在不使用额外空间的情况下解决,或者如何优化反转法的性能。 总结步骤: 1. 确定LeetCode top100中的常见题目,并匹配用户提供的引用中的例子。 2. 为每个例子提供问题描述、解决思路、代码示例,并确保代码正确。 3. 生成每个题目相关的后续问题,帮助用户深入理解。 4. 检查引用标记是否正确,代码格式是否符合要求,避免语法错误。 5. 使用中文回答,保持结构清晰,分点说明。</think>以下整理了LeetCode热门100题中部分经典问题的C++解决案,涵盖关键思路与代码实现: --- ### 1. 两数之(Two Sum) **问题描述**:给定数组一个目标值,找出数组中两数之等于目标值的索引。 **解决思路**:利用哈希表记录遍历过的数值及其索引,实现$O(1)$时间复杂度的查找[^1]。 ```cpp #include <vector> #include <unordered_map> using namespace std; class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> num_map; for (int i = 0; i < nums.size(); ++i) { int complement = target - nums[i]; if (num_map.find(complement) != num_map.end()) { return {num_map[complement], i}; } num_map[nums[i]] = i; } return {}; } }; ``` --- ### 2. 反转链表(Reverse Linked List) **问题描述**:将单链表反转。 **解决思路**:使用个指针(前驱、当前、后继),逐步反转节点指向。 ```cpp struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; class Solution { public: ListNode* reverseList(ListNode* head) { ListNode *prev = nullptr, *curr = head; while (curr) { ListNode *next = curr->next; curr->next = prev; prev = curr; curr = next; } return prev; } }; ``` --- ### 3. 二叉树的中序遍历(Binary Tree Inorder Traversal) **问题描述**:非递归实现二叉树的中序遍历。 **解决思路**:使用栈模拟递归过程,优先访问左子树[^2]。 ```cpp #include <vector> #include <stack> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} }; class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode*> stk; TreeNode *curr = root; while (curr || !stk.empty()) { while (curr) { stk.push(curr); curr = curr->left; } curr = stk.top(); stk.pop(); res.push_back(curr->val); curr = curr->right; } return res; } }; ``` --- ### 4. 子数组能被K整除(Subarray Sums Divisible by K) **问题描述**:统计数组中连续子数组的能被K整除的数量。 **解决思路**:前缀+哈希表记录余数频率,时间复杂度$O(n)$[^3]。 ```cpp #include <vector> #include <unordered_map> using namespace std; class Solution { public: int subarraysDivByK(vector<int>& nums, int k) { unordered_map<int, int> map = {{0, 1}}; int ans = 0, sum = 0; for (auto &num : nums) { sum += num; int mod = (sum % k + k) % k; // 处理负数取模 if (map.count(mod)) ans += map[mod]; map[mod]++; } return ans; } }; ``` --- §§ 1. 如何优化两数之问题以处理数据量? 2. 反转链表的递归实现法是什么? 3. 二叉树前序后序遍历的非递归实现有何区别? 4. 如何证明前缀+哈希表法在子数组问题中的正确性? --- **引用说明** : 哈希表优化查找时间的思路常用于数组字符串问题,如两数之二进制求。 [^2]: 栈队列是模拟递归层次遍历的核心数据结构。 : 前缀与哈希表结合可高效解决子数组问题,如LeetCode 974560题。 [^4]: 最短路径算法(如Dijkstra)中更新距离数组的法与贪心策略相关。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值