【小白学机器学习42】进行多次抽样,样本的分布参数和总体的分布参数的关系

目录

1 进行多次抽样,样本的分布参数和总体的分布参数的关系

2  样本容量越大,多次抽样的样本的分布参数和总体的分布参数的关系

2.1 如果进行多次抽样,样本的均值将趋向总体的均值

2.2 换句话说:样本的均值将趋向总体的均值就是,mean(样本均值) = 总体均值

2.3 下面的图能说明很多信息

2.4 下面是具体的代码

2.4.1 代码里发现的一个随机问题

3 随着样本容量增大,多次抽样de均值de→平均值和std的变化

3.1 直接看(样本容量变化时)多次取样de样本的均值趋向总体均值的过程

3. 2 有意义的多次取样时,标准差std随着样本规模的变化趋势

3.3 继续改进,全部都修改为,相同样本规模下多次试验,然后根据多次试验结果得出均值和均值的std

4 随着样本容量增大,多次抽样de标准差de→平均值和std的变化(也需要像第3部分一样改进)

4.1 也是趋向总体的std

4.2 一般情况下,样本的方差<=总体方差

4.3 用样本方差直接去估计总体方差是有偏估计


进行多次抽样,样本的分布参数和总体的分布参数的关系

1 进行多次抽样,样本的分布参数和总体的分布参数的关系

  • 每次抽样都会得到1个均值,1个方差
  • 多次抽样会得到多个均值,多个方差
  • 可以把多次抽样得到的均值,方差再进行平均,看下多次抽样的平均值和总体参数的关系

  • 多次抽样会得到多个均值→也就是均值数组,这个均值数组的平均值,接近总体的均值
  • 多次抽样会得到多个方差→也就是方差数组,这个方差数组的平均值,会远小于总体的均值,这就是样本方差对总体方差的有偏估计。
  •  std的情况类方差。

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3population1=sp.stats.norm(loc=4,scale=0.8)  #不设置size,可以认为是一个无限的总体?
samples_mean_array1=np.zeros(1000)
np.random.seed(1)
for i in range(0,1000):sample1=population1.rvs(size=10)samples_mean_array1[i]=np.mean(sample1)#print(samples_mean_array1)
sns.distplot(samples_mean_array1)
#sns.histplot(samples_mean_array1)
#sns.kdeplot(samples_mean_array1, fill=True)
plt.show()print(f"设置的总体的均值 =4")
print(f"设置的总体的方差 ={0.8*0.8}")
print(f"设置的总体的标准差 =0.8")
print()print(f"多次抽样的样本均值的均值 = {np.mean(samples_mean_array1)}")
print(f"多次抽样的样本方差的均值 = {np.var(samples_mean_array1)}")
print(f"多次抽样的样本标准差的均值 = {np.std(samples_mean_array1)}")
print()print("多次抽样的样本的均值的均值,接近总体的均值")      
print("多次抽样的样本的方差的均值,远远小于总体的方差")   
print("多次抽样的样本的标准差的均值,远远小于总体的标准差")       
print()

2  样本容量越大,多次抽样的样本的分布参数和总体的分布参数的关系

2.1 如果进行多次抽样,样本的均值将趋向总体的均值

  • 首先,还是基于,多次抽样
  • 因为单次抽样的随机性比较大
  • 样本容量越大,多次抽样的样本的分布参数和总体的分布参数的关系会发现
  1. 样本容量越大,多次抽样的样本的平均值的均值,会收敛,越来越接近总体的平均值
  2. 样本容量越大,多次抽样的样本的方差的均值,会收敛,越来越接近总体的方差

2.2 换句话说:样本的均值将趋向总体的均值就是,mean(样本均值) = 总体均值

  • 样本的均值将趋向总体的均值
  • → 样本均值的均值 = 总体均值
  • → mean(样本均值) = 总体均值

2.3 下面的图能说明很多信息

  • 大数定律:简单理解,就是多次试验,样本的均值会接近总体的均值
  • 基本可以反应在下面的图里
  • 下面2张图
  • plot折线图,可以看出随着sample_size增加,样本均值向总体均值靠拢的趋势,过程
  • hist频度图更清晰的反应,样本均值的均值,集中靠近总体均值的程度。
  • hist图可以理解为,plot折线图,转过来,然后数据往下掉下来集中形成的!

hist图就像把plot给旋转竖过来了+ 下沉相同的归类后统计成次数!!

hist图就像把plot给旋转竖过来了+ 下沉相同的归类后统计成次数!!

hist图就像把plot给旋转竖过来了+ 下沉相同的归类后统计成次数!!

2.4 下面是具体的代码

2.4.1 代码里发现的一个随机问题

  • ramdon.seed(100) 计算出来的,均值的均值=4.34
  • 碰巧代码里整行用的是ramdon.seed(100),否则还发现不了这么奇怪的事情。。。
  • ramdon.seed(1)  或者ramdon.seed() 计算出来的,均值的均值=0.00099
  • 暂时不知道原因,很奇怪。。。。小心吧


 

3 随着样本容量增大,多次抽样de均值de→平均值和std的变化

3.1 直接看(样本容量变化时)多次取样de样本的均值趋向总体均值的过程

  • 多次抽样的样本均值的均值趋向总体的均值,我这因为总体loc=0, 样本均值的均值也接近0

  • 但是,这样求出的std 没意义
  • 错误:多次抽样的样本均值的 方差很小,说明很稳定
  • 因为,这个方差/ 标准差,是把不同取样规模的样本的均值,加一起再平均算的方差/ 标准差,本身没有意义
  • 有意义的方差/ 标准差,是在相同的 样本规模时,多次取样(循环里的循环),得出的多次取样的方差/ 标准差,才有比较的意义!这个一定要注意!

  • 为什么呢,因为我们必须再相同的标准下计算均值和方差
  • 相同的标准:取样的样本规模 sample_size
  • 相同的sample_size下,取样一次,均值基本比较稳定,勉强可用
  • 相同的sample_size下,取样一次,方差会相差很大,不能这么用

  • 其实严格的说
  • 无论,均值还是std,都需要再相同的sample_size下,多试验多次,计算这个相同条件:比如sample_size=50下的多次取样的均值和std
  • 相同的sample_size下,取样多次得到的mean,再计算np.mean(mean)
  • 相同的sample_size下,取样多次得到的mean,再计算np.std(mean)

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3np.random.seed(1)
count1=999#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_mean_array1=np.zeros(count1)
sample_mean_std_array2=np.zeros(count1)for i in range(0,count1,1):#每次循环时,取1次数量,作为样本array1=population1.rvs(size=10+i*10)sample_mean_array1[i]=np.mean(array1)sample_mean_std_array2[i]=np.std(array1)#下面展示的是每次取样/试验得到的 均值和std随着 取样数量的增加 的变化趋势
fig1=plt.figure(num=1,figsize=(5, 5))
plt.plot(sample_mean_array1)
plt.title("随着抽样规模的变大,多次抽样的样本均值的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_mean",fontsize=16)fig2=plt.figure(num=2,figsize=(5, 5))
plt.plot(sample_mean_std_array2)
plt.title("随着抽样规模的变大,多次抽样的样本std的变化---这个std无意义!",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_std",fontsize=16)#print(sample_mean_array1)
print(f"取样{count1}次的均值的均值={np.mean(sample_mean_array1)}")
print(f"取样{count1}次的均值的std={np.std(sample_mean_array2)}")

3. 2 有意义的多次取样时,标准差std随着样本规模的变化趋势

  • 下图可见,
  • 在不同的抽样规模下,标准差,是明显随着取样规模的变大而变小的

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3np.random.seed(1)
count1=999#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_mean_array1=np.zeros(count1)
sample_mean_std_array2=np.zeros(count1)for i in range(0,count1,1):#每次循环时,取1次数量,作为样本array1=population1.rvs(size=10+i*10)sample_mean_array1[i]=np.mean(array1)sample_mean_std_array2[i]=np.std(array1)#下面展示的是每次取样/试验得到的 均值和std随着 取样数量的增加 的变化趋势
fig1=plt.figure(num=1,figsize=(5, 5))
plt.plot(sample_mean_array1)
plt.title("随着抽样规模的变大,多次抽样的样本均值的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_mean",fontsize=16)fig2=plt.figure(num=2,figsize=(5, 5))
plt.plot(sample_mean_std_array2)
plt.title("随着抽样规模的变大,多次抽样的样本std的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_std",fontsize=16)#print(sample_mean_array1)
print(f"取样{count1}次的均值的均值={np.mean(sample_mean_array1)}")
print(f"取样{count1}次的均值的std={np.std(sample_mean_array2)}")#下面展示的是每次取样/试验得到的 均值和std随着 取样数量的增加 的变化趋势
#这个 std是均值的std, 也就是在每个样本容量规模处,做多次试验(嵌套循环),所得到的std,
#而不是不同规模下的取样样本,得到的多个样本的均值的标准差,那个没啥意义!sample_mean_array11=np.zeros(count1)
sample_mean_std_array21=np.zeros(count1)for i in range(0,count1,1):#每次循环时,取1次数量,作为样本for j in range(0,10,1):array11=population1.rvs(size=10+i*10)sample_mean_array11[j]=np.mean(array11)#sample_mean11[i]=np.mean(sample_mean_array11)#sample_mean_std_array21[i]=np.std(sample_mean11)sample_mean_std_array21[i]=np.std(sample_mean_array11)fig3=plt.figure(num=3,figsize=(5, 5))
plt.plot(sample_mean_std_array21)
plt.title("随着抽样规模的变大,多次抽样的样本std的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_std",fontsize=16)

3.3 继续改进,全部都修改为,相同样本规模下多次试验,然后根据多次试验结果得出均值和均值的std

  • 都是需要先内部循环多次,
  • 得到平均值的数组
  • 然后再求这个数组  平均值和std
  •     sample_mean_std_array21[i]=np.std(sample_mean_array11)
  •     sample_mean_mean_array20[i]=np.mean(sample_mean_array11)

结论

  • 随着取样规模变大,样本的均值的均值的绝对值趋向总体均值。图形上表现为,正负区间震荡着接近总体均值
  • 随着取样规模变大,样本的均值的的std越来越小,趋向总体均值。图形上表现为,都是正数,但是数值越来越小,趋向0

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3np.random.seed(1)
count1=999#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_mean_array1=np.zeros(count1)
sample_mean_std_array2=np.zeros(count1)#下面展示的是每次取样/试验得到的 均值和std随着 取样数量的增加 的变化趋势
#这个 std是均值的std, 也就是在每个样本容量规模处,做多次试验(嵌套循环),所得到的std,
#而不是不同规模下的取样样本,得到的多个样本的均值的标准差,那个没啥意义!sample_mean_array11=np.zeros(count1)
sample_mean_std_array21=np.zeros(count1)
sample_mean_mean_array20=np.zeros(count1)for i in range(0,count1,1):#每次循环时,取1次数量,作为样本for j in range(0,10,1):array11=population1.rvs(size=10+i*10)sample_mean_array11[j]=np.mean(array11)sample_mean_std_array21[i]=np.std(sample_mean_array11)sample_mean_mean_array20[i]=np.mean(sample_mean_array11)fig3=plt.figure(num=3,figsize=(5, 5))
plt.plot(sample_mean_mean_array20)
plt.title("随着抽样规模的变大,多次抽样的样本mean的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_std",fontsize=16)fig4=plt.figure(num=4,figsize=(5, 5))
plt.plot(sample_mean_std_array21)
plt.title("随着抽样规模的变大,多次抽样的样本std的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_std",fontsize=16)

4 随着样本容量增大,多次抽样de标准差de→平均值和std的变化(也需要像第3部分一样改进)

4.1 也是趋向总体的std

  • 多次抽样的样本std的均值趋向总体的std,我这因为总体scale=1, 样本std的均值的也接近1
  • 多次抽样的样本均值的 方差很小,说明很稳定

4.2 一般情况下,样本的方差<=总体方差

  • 一般情况下,样本的方差<=总体方差
  • 因为,总体里包括各个极值,极大极小值,这些值对方差的贡献影响最大
  • 而样本里经常是部分数据,最大取值在极值范围内,所以样本方差<=总体方差

4.3 用样本方差直接去估计总体方差是有偏估计

  • 多次抽样的样本方差的均值,应该还是小于总体的方差,因为是有偏估计
  • 比如针对方差
  • Σ(xi-u)^2/n     用样本方差去直接估计总体方差
  • Σ(xi-u)^2/(n-1)  才是无偏估计
import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
%precision 3np.random.seed(1)
count1=999#生成一个总体的正态分布,先不生成数量
population1=sp.stats.norm(loc=0,scale=1)
sample_std_array1=np.zeros(count1)for i in range(0,count1,1):#每次循环时,取1次数量,作为样本array1=population1.rvs(size=10+i*10)sample_std_array1[i]=np.std(array1)   #只看std就够了,var不看了fig1=plt.figure(num=1,figsize=(5, 5))
plt.plot(sample_std_array1)
plt.title("随着抽样规模的变大,多次抽样的样本std的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("sample_std",fontsize=16)"""
plt.hist(sample_mean_array1)
plt.title("随着抽样规模的变大,多次抽样的样本std的变化",fontsize=16)
plt.xlabel("sample_size",fontsize=16)
plt.ylabel("频数",fontsize=16)
"""
#print(sample_mean_array1)
print(f"取样{count1}次的std的均值={np.mean(sample_mean_array1)}")
print(f"取样{count1}次的std的std={np.std(sample_mean_array2)}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Web开发(请求)获取JOSN对象| 获取数据(Header)

大家好&#xff0c;我叫小帅今天我们来继续Spring Boot的内容。 文章目录 1. 获取JSON对象2. 获取URL中参数PathVariable3.上传⽂件RequestPart3. 获取Cookie/Session3.1 获取和设置Cookie3.1.1传统获取Cookie3.1.2简洁获取Cookie 3. 2 获取和存储Session3.2.1获取Session&…

CSS学习记录03

CSS背景 CSS 背景属性用于定义元素的背景效果。 CSS background-color background-color属性指定元素的背景色。 页面的背景色设置如下&#xff1a; body {background-color: lightblue; } 通过CSS&#xff0c;颜色通常由以下方式指定&#xff1a; 有效的颜色名称-比如“…

Matlab mex- setup报错—错误使用 mex,未检测到支持的编译器...

错误日志&#xff1a; 在使用mex编译时报错提示&#xff1a;错误使用 mex&#xff0c;未检测到支持的编译器。您可以安装免费提供的 MinGW-w64 C/C 编译器&#xff1b;请参阅安装 MinGW-w64 编译器。有关更多选项&#xff0c;请访问https://www.mathworks.com/support/compile…

STM32CUBEIDE FreeRTOS操作教程(十):interrupt on/off中断开关

STM32CUBEIDE FreeRTOS操作教程&#xff08;十&#xff09;&#xff1a;interrupt on/off中断开关 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件&#xff0c;不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发…

Python学习38天

class Person:def __init__(self, name, age, job):self.name nameself.age ageself.job job# 重写函数返回属性def __str__(self):return f"{self.name}--{self.age}--{self.job}"# 冒泡排序法 def bubble_sort(my_list: list[Person]):"""冒泡排…

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据

目录 一、需求分析 二、方案设计&#xff08;概要/详细&#xff09; 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时&#xff0c;往往基于过往采购合同数据&#xff0c;给出现在采购或报价的金额…

【AI系统】AI 编译器基本架构

AI 编译器基本架构 在上一篇文章中将 AI 编译器的发展大致分为了 3 个阶段&#xff0c;分别为 1&#xff09;朴素编译器、2&#xff09;专用编译器以及 3&#xff09;通用编译器。 本文作为上一篇文章 AI 编译器架构的一个延续&#xff0c;着重讨论 AI 编译器的通用架构。首先…

java版工程项目管理系统源码:Spring Cloud与前后端分离的完美结合

在现代化的工程项目管理中&#xff0c;一套功能全面、操作便捷的系统至关重要。本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统&#xff0c;结合Vue和ElementUI实现前后端分离。该系统涵盖了项目管理、合同管理、预警管理、竣工管理、质量管理等多个…

近几年,GIS专业的五类就业方向!

近二十几年来&#xff0c;地理信息科学毕业生的就业方向在不断发生变化。 早期的地理信息科学技术主要应用于政府部门&#xff0c;因此学生就业主要在高校、交通运输、规划勘测设计、国土、矿业、水利电力、通讯、农林、城市建设、旅游等国家政府部门或事业单位。 随着地理信…

css选择当前元素前面的一个元素

选择text-danger前面的ant-divider: .ant-divider:has( .text-danger) {display: none; }

动态代理如何加强安全性

在当今这个信息爆炸、网络无孔不入的时代&#xff0c;我们的每一次点击、每一次浏览都可能留下痕迹&#xff0c;成为潜在的安全隐患。如何在享受网络便利的同时&#xff0c;有效保护自己的隐私和信息安全&#xff0c;成为了每位网络使用者必须面对的重要课题。动态代理服务器&a…

网页端五子棋对战(二)---数据库连接用户登录注册接口设计postman验证

文章目录 1.用户模块--数据库的设计1.1idea新建db.sql文件1.2mysql建库建表 2.使用mybatis操作数据库2.1修改spring配置文件2.2创建实体类用户user2.3创建Mapper接口2.4实现xml配置文件 3.前后端交互接口架构4.后端代码实现4.1登录模块4.2注册模块4.3获取用户信息 5.postman验证…

【导航查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

谷歌浏览器中搜索引擎的设置与管理

谷歌浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;以其高速、稳定和丰富的功能深受用户喜爱。对于许多用户来说&#xff0c;自定义和管理搜索引擎是提升浏览体验的重要一环。本文将详细介绍如何在谷歌浏览器中设置和管理搜索引擎&#xff0c;包括如何修改默认搜索引擎、…

【Linux 篇】Docker 容器星河与镜像灯塔:Linux 系统下解锁应用部署奇幻征程

文章目录 【Linux 篇】Docker 容器星河与镜像灯塔&#xff1a;Linux 系统下解锁应用部署奇幻征程前言一 、docker上部署mysql1. 拉取mysql镜像2. 创建容器3. 远程登录mysql 二 、docker上部署nginx1. 拉取nginx镜像2. 在dockerTar目录下 上传nginx.tar rz命令3. 创建nginx容器4…

vue.js学习(day 18)

实例&#xff1a;面经基础版

XGBoost算法原理

XGBoost&#xff08;eXtreme Gradient Boosting&#xff09;是一种基于梯度提升决策树的机器学习算法&#xff0c;它通过优化损失函数来构建模型。XGBoost在许多数据科学竞赛中取得了成功&#xff0c;并且由于其高效性和准确性而广受好评。 1. 梯度提升框架 在开始讨论XGBoost…

vim插件管理器vim-plug替代vim-bundle

文章目录 vim-plug与vim-bundle对比vim-plug安装vim-plug管理安装插件相关文章 vim-plug与vim-bundle对比 vim-plug 和 vim-bundle 都是 Vim 的插件管理器&#xff0c;但它们有一些关键的区别。以下是两者的主要对比&#xff1a; 易用性和简洁性 vim-plug: 易用性: vim-plug …

LeetCode78:子集

链接&#xff1a;78. 子集 假设我们要求[1, 2, 3]的子集&#xff1a; 我们知道[1, 2]的子集是A&#xff1a; 而[1, 2, 3]就是比[1, 2]多了一个元素3&#xff1b;所以将3加入到上述A中的每个集合中&#xff0c;得到一个新集合B&#xff1a; 结论&#xff1a;[1, 2, 3]的子集就…

【k8s】监控metrics-server

metrics-server介绍 Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上KubeletAPI收集指标&#xff0c;通过Kubernetes聚合器注册在Master APIServer中。为集群提供Node、Pods资源利用率指标。 就像Linux 系统一样…