【小白学机器学习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&…

分布式爬虫那些事儿

什么是分布式爬虫&#xff1f; 假设你有一群小伙伴&#xff0c;他们每个人都在帮你剥花生壳&#xff0c;然后把剥好的花生仁都丢到你面前的盘子里。分布式爬虫也差不多&#xff0c;许多台电脑一起上阵&#xff0c;各自负责去同一个网站获取数据&#xff0c;这叫建立一个分布式…

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…

23种设计模式之外观模式

目录 1. 简介2. 代码2.1 SelectFoodService (选择食品)2.2 PayService (支付服务)2.3 TakeService (制作服务)2.4 OrderService (下单服务)2.5 Food (食品)2.6 TackingSystem &#xff08;外观类&#xff09;2.7 Test &#xff08;测试类&#xff09; 3. 优缺点3. 总结 1. 简介…

vue3 路由跳转携带参数以及其他页面接收参数

vue3 路由跳转携带参数以及其他页面接收参数 传参页面 <script setup> import { useRouter } from "vue-router"; const router useRouter();// 路由 const goToDetail () > {router.push({ path: /about, query: { id: 123 } }); }; function goToDeta…

MeterSphere VS 其他开源接口测试工具

对比项 swagger yapi postman httprunner2.x/3.x jmeter metersphere UI界面 支持支持支持 不支持&#xff08;无界面/UI不够便捷 脚本编写量大 文档不够清晰&#xff09; 支持支持 单接口 支持支持支持支持支持支持 业务场景自动化 不支持支持支持支持支持支持 操作数据…

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

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

【系统架构设计师论文】微服务架构设计与实践

一、微服务架构概述 1.1 什么是微服务架构? 微服务架构(Microservices Architecture)是一种将应用程序拆分为多个小型服务的架构模式,每个服务都可以独立开发、部署、扩展,并通过轻量级的通信协议(通常是 HTTP/REST 或 gRPC)进行交互。这种架构的核心思想是将大型单体…

长安汽车嵌入式面试题及参考答案

数据结构中的堆栈和编程中的堆栈有什么区别? 在数据结构中,堆栈是一种抽象的数据类型。它遵循后进先出(LIFO)的原则。从操作角度来看,有入栈(push)和出栈(pop)操作。例如,想象有一个装有盘子的栈,只能从栈顶放入和取出盘子。数据结构中的堆栈主要关注其逻辑结构和操…

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;给出现在采购或报价的金额…

docker x86环境构建arm镜像出现failed to fetch oauth token问题

问题&#xff1a;最近在使用x86的MAC机器准备打包arm的镜像时使用命令如下 docker buildx build --platform linux/arm64 --load --no-cache -t deepface:v1-arm .出现连接问题 [] Building 31.7s (3/3) FINISHED …

C语言中map的用法和其他数据结构的区别

在C语言中&#xff0c;没有直接内置的map数据结构&#xff08;类似于C的std::map&#xff09;&#xff0c;但可以通过结构体、数组、链表或哈希表来实现类似功能。下面将从map的概念、实现方法和与其他数据结构的区别等方面进行详细讲解。 一、Map的概念 Map是一种键值对&…

【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…

el-table 纵向 横向 多级表头

<el-table :data"tableData" class"diaTable":span-method"handleSpanMethod"border:header-cell-style"{background:#292929,color:#fff}"><!-- 纵向表头 --><el-table-column label"纵向表头" width"…