【数学建模】《实战数学建模:例题与讲解》第七讲-Bootstrap方法(含Matlab代码)

【数学建模】《实战数学建模:例题与讲解》第七讲-Bootstrap方法(含Matlab代码)

    • 基本概念
    • 习题7.3
      • 1. 题目要求
      • 2.解题过程
      • 3.程序
      • 4.结果
    • 习题7.5
      • 1. 题目要求
      • 2.解题过程
      • 3.程序
      • 4.结果

如果这篇文章对你有帮助,欢迎点赞与收藏~
在这里插入图片描述

基本概念

Bootstrap方法是一种统计技术,用于估计一个样本统计量的分布(例如均值、中位数或标准偏差)。它通过从原始数据集中重复抽取样本(通常是带替换的)来工作,允许评估统计量的变异性和不确定性。这种方法特别有用于小样本数据集或当传统参数统计方法不适用时。

Bootstrap过程的基本步骤如下:

  1. 重复抽样:从原始数据集中随机抽取n个观测值,形成一个新的样本。这个过程通常是带替换的,意味着同一个观测值可以在一个样本中出现多次。

  2. 计算统计量:在每个新生成的样本上计算感兴趣的统计量(例如均值或中位数)。

  3. 重复过程:重复上述两步多次(通常是成千上万次),生成统计量的多个估计值。

  4. 分析结果:通过观察所有估计值的分布来评估统计量的分布、置信区间等。

习题7.3

1. 题目要求

image-20230427135726289

2.解题过程

解:

相继地、独立地自原始样本数据用放回抽样的方法,得到10000个容量均为5的Bootstrap 样本。

对每个Bootstrap样本算出样本均值 x ‾ i ∗ ( i = 1 , 2 , ⋯   , 10000 ) \overline{{{x}}}_{i}^{^{\ast}}(i=1,2,\cdots,10000) xi(i=1,2,,10000) ,将10000个 x ‾ ∗ {\overline{{x}}}^{*} x 按自小到大排序,左起第500位为 x ‾ ( 500 ) ∗ = 1098 {\overline{{x}}}_{(500)}^{*}=1098 x(500)=1098 ,左起第9500位为 x ‾ ( 9500 ) ∗ = 1232 {\overline{{x}}}_{(9500)}^{*}=1232 x(9500)=1232 ,于是得 μ 的一个置信水平为0.90的Bootstrap置信区间为
( x ‾ ( 500 ) ∗ , x ‾ ( 9500 ) ∗ ) = ( 1098 , 1232 ) ({\overline{{x}}}_{(500)}^{*},{\overline{{x}}}_{(9500)}^{*})=(1098,1232) (x(500),x(9500))=(1098,1232)

3.程序

求解的MATLAB程序如下:

clc, clear

a = [1050, 1100, 1120, 1250, 1280];
b = bootci(10000, {@ (x)mean(x), a}, 'alpha', 0.1);
b

4.结果

【数学建模】《实战数学建模:例题与讲解》第七讲-Bootstrap方法(含Matlab代码)_第1张图片

得 μ 的一个置信水平为0.90的Bootstrap置信区间为:
( x ‾ ( 500 ) ∗ , x ‾ ( 9500 ) ∗ ) = ( 1098 , 1232 ) ({\overline{{x}}}_{(500)}^{*},{\overline{{x}}}_{(9500)}^{*})=(1098,1232) (x(500),x(9500))=(1098,1232)

习题7.5

1. 题目要求

【数学建模】《实战数学建模:例题与讲解》第七讲-Bootstrap方法(含Matlab代码)_第2张图片

2.解题过程

解:

求解 x 和 y 之间的回归方程,即一个能够最佳拟合这些数据的线性模型.

构造线性方程组的系数矩阵 b。它由四列组成,分别是 1/x、1、x 和 x 的平方。这些列的选择基于假设的线性关系形式,但也可以根据具体的问题进行调整。需要注意的是,已经对 x 取了转置,使其成为一个列向量。

求出的系数矩阵如下:
b = [ 1.0000 1.0000 1.0000 1.0000 0.5000 1.0000 2.0000 4.0000 0.2500 1.0000 4.0000 16.0000 0.2000 1.0000 5.0000 25.0000 0.1429 1.0000 7.0000 49.0000 0.1250 1.0000 8.0000 64.0000 0.1111 1.0000 9.0000 81.0000 0.1000 1.0000 10.0000 100.0000 ] b= \begin{bmatrix} 1.0000 & 1.0000 & 1.0000 & 1.0000 \\ 0.5000 & 1.0000 & 2.0000 & 4.0000 \\ 0.2500 & 1.0000 & 4.0000 & 16.0000 \\ 0.2000 & 1.0000 & 5.0000 & 25.0000 \\ 0.1429 & 1.0000 & 7.0000 & 49.0000 \\ 0.1250 & 1.0000 & 8.0000 & 64.0000 \\ 0.1111 & 1.0000 & 9.0000 & 81.0000 \\ 0.1000 & 1.0000 & 10.0000 & 100.0000 \\ \end{bmatrix} b= 1.00000.50000.25000.20000.14290.12500.11110.10001.00001.00001.00001.00001.00001.00001.00001.00001.00002.00004.00005.00007.00008.00009.000010.00001.00004.000016.000025.000049.000064.000081.0000100.0000
最后,使用反斜杠符号求解线性方程组的最小二乘解。具体来说,它使用了正规方程的方法,即求解 ( b T b ) − 1 b T y (b^T b)^{-1} b^T y (bTb)1bTy,其中 b T b^T bT 表示 b 的转置, − 1 ^{-1} 1 表示矩阵的逆, y y y 表示因变量的向量。最终的结果是一个包含了四个系数的列向量,分别对应于 b 矩阵的四列。这些系数定义了回归方程的形式,可以用于预测新的因变量值。

最终求解得到的回归方程为:
y = 0.6498 x + 0.5901 + 0.0666 x − 0.0091 x 2 , y={\frac{0.6498}{x}}+0.5901+0.0666x-0.0091x^{2}, y=x0.6498+0.5901+0.0666x0.0091x2,

3.程序

求解的MATLAB程序如下:

clc, clear

x = [1, 2, 4, 5, 7, 8, 9, 10]';
y = [1.3, 1, 0.9, 0.81, 0.7, 0.6, 0.55, 0.4]';

b = [1 ./ x, ones(size(x)), x, x.^2] % 构造线性方程组的系数矩阵
% 这一行代码构造了线性方程组的系数矩阵 b。它由四列组成,分别是 1/x、1、x 和 x 的平方

% 使用反斜杠符号求解线性方程组的最小二乘解
cs = b \ y % 求最小二乘解

4.结果

【数学建模】《实战数学建模:例题与讲解》第七讲-Bootstrap方法(含Matlab代码)_第3张图片

回归方程为:
y = 0.6498 x + 0.5901 + 0.0666 x − 0.0091 x 2 , y={\frac{0.6498}{x}}+0.5901+0.0666x-0.0091x^{2}, y=x0.6498+0.5901+0.0666x0.0091x2,

如果这篇文章对你有帮助,欢迎点赞与收藏~

你可能感兴趣的:(数学建模,数学建模,bootstrap,matlab)