我的编程空间,编程开发者的网络收藏夹
学习永远不晚

R语言随机抽样详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

R语言随机抽样详解

专题:随机抽样

简单随机抽样

从总体中抽取样本的方法很多,最常用的方法是简单随机抽样。

简单随机抽样:从容量为N的总体中,任意抽取n个单位作为样本,使每个可能的样本被抽中的概率相等的一种抽样方式。

  • 放回抽样(重复抽样):本次从整体中抽取的数据样本,在下一次抽取时同样有机会被抽取。
  • 不放回抽样(不重复抽样):一旦被抽取为样本,下次就不能再被抽取了。

srswr() srswor() sample()

sample函数

sample可以实现放回随机抽样和不放回随机抽样,也可以对数据进行随机分组。

格式:

 sample(x, size, replace=FALS, prob=NULL)

参数说明:

参数说明
x为向量,表示抽样的总体,或者是一个正整数,表示样本总体为1~n;
size为样本容量,即要抽取的样本个数,是一个非负整数;
replace表示是否为有放回的抽样,是一个逻辑值,默认为FALSE,即默认为无放回抽样;
prob为权重向量,即x中元素被抽取到的概率,是一个取值0~1的向量,其长度应该与x的长度相同。

从26个大写字母中不放回随机抽取5个

> sample(LETTERS,5)
[1] "E" "W" "L" "X" "Q"

将26个大写字母随机分成2组,第2组和第1组的比例为7:3

> n<-sample(2,26,replace = TRUE,prob=c(0.7,0.3))
> n
 [1] 1 1 2 1 1 2 2 2 1 1 2 1 1 1 2 2 1 2 1 2 1 2 1 1 1 1
> sample1<-LETTERS[n==1]
> sample2<-LETTERS[n==2]
> sample1
 [1] "A" "B" "D" "E" "I" "J" "L" "M" "N" "Q" "S" "U" "W" "X" "Y" "Z"
> sample2
 [1] "C" "F" "G" "H" "K" "O" "P" "R" "T" "V"

将26个大写字母随机分成3组,每组的个数分配比例为0.4,0.4,0.2

> n<-sample(3,26,replace = TRUE,prob = c(0.4,0.4,0.2))
> n
 [1] 2 1 2 1 3 2 3 1 3 1 1 1 1 2 1 1 2 3 3 1 2 3 3 2 2 3
> sample1<-LETTERS[n==1]
> sample1
 [1] "B" "D" "H" "J" "K" "L" "M" "O" "P" "T"
> sample2<-LETTERS[n==2]
> sample2
[1] "A" "C" "F" "N" "Q" "U" "X" "Y"
> sample3<-LETTERS[n==3]
> sample3
[1] "E" "G" "I" "R" "S" "V" "W" "Z"

有10位学生的学号分别为1,2,…,10,现在要进行毕业答辩,答辩顺序要求 随机产生。请给出代码。

> sample(10)
 [1]  7  9 10  6  3  4  1  2  5  8
> x=c(1,3,5,7)
> sample(x,size=20,replace=T, prob=c(0.1,0.2,0.3,0.9))
 [1] 5 3 7 7 5 7 7 7 7 5 7 7 7 1 7 3 1 7 1 7

结论:对每一个元素都可以给定一个概率,且每个概率是独立的,即在参数prob中,不一定所有元素的概率加起来等于1,它只代表某元素被抽取的概率而已。

模拟抛硬币游戏,抛10次,看看出现正面H(Heads)和反面T(Tails)的情况。

将抛硬币视为有放回的实验,即将参数replace设置为TRUE。

> sample(c("H","F"),10,replace = TRUE)
 [1] "H" "F" "H" "F" "F" "F" "F" "H" "H" "H"

某篮球运动员投篮命中率为70%,模拟10次投篮的命中(S)和未命中(F)情况。

> sample(c("S","F"),10,replace = TRUE,prob = c(0.7,0.3))
 [1] "S" "S" "F" "S" "S" "S" "F" "S" "S" "S"

srswor函数

Simple random sampling without replacement

Description:Draws a simple random sampling without replacement of size n (equal probabilities, fixed sample size, without replacement).

Usage:srswor(n,N)

Value:Returns a vector (with elements 0 and 1) of size N, the population size. Each element k of this vector indicates the status of unit k (1, unit k is selected in the sample; 0, otherwise).

> library(sampling)
> s<-srswor(10,26)
> s
 [1] 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 0
> obs<-which(s==1)
> obs
 [1]  1  4  7  9 12 13 16 17 21 23
> sample<-LETTERS[obs]
> sample
 [1] "A" "D" "G" "I" "L" "M" "P" "Q" "U" "W"

在26个中抽取10个,1表示被抽取的状态,0表示没有被抽取状态

srswr函数

Simple random sampling with replacement

Description:Draws a simple random sampling with replacement of size n (equal probabilities, fixed sample size, without replacement).

Usage:srswr(n,N)

Value:Returns a vector of size N, population size. Each element k of this vector indicates the number of replicates for unit k in the sample.

> s<-srswr(10,26)
> s
 [1] 1 2 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0
> obs<-which(s!=0)
> obs
[1]  1  2  6  7 18 19 20 22
> sample<-LETTERS[obs]
> sample
[1] "A" "B" "F" "G" "R" "S" "T" "V"

分层抽样

分层抽样将分成不同子总体(或称为层)的总体中,按规定的比例从不同层中随机抽取样品(个体)的方法。

这种方法的优点是,样本的代表性比较好,抽样误差比较小。缺点是抽样手续较简单随机抽样还要繁杂些。

R语言sampling包的sampling::strata()可以实现

其命令为:

strata(data, stratanames=NULL, size, method=c(“srswor”,“srswr”,“poisson”,“systematic”), pik,description=FALSE)

其中,x为样本数据, stratanames为分层抽样要使用的变量,size为各层抽取个数,method指的是抽样方法,“srswor”、“srswr”、“poisson”、"systematic"分别指不重置简单抽样、重置简单抽样、泊松抽样、系统抽样,pik指的是各数据包含在样本中的概率,description默认为FALSE,若设置为TRUE则输出样本个数和总体个数。返回值ID_unit(被选单元的标志符)、Stratum(单元层)、Prob(包含单元的概率)

> library(sampling)
> x<-strata(c("Species"),size=c(2,3,4),method="srswor",data=iris)
> x
       Species ID_unit Prob Stratum
11      setosa      11 0.04       1
21      setosa      21 0.04       1
68  versicolor      68 0.06       2
83  versicolor      83 0.06       2
98  versicolor      98 0.06       2
102  virginica     102 0.08       3
103  virginica     103 0.08       3
111  virginica     111 0.08       3
112  virginica     112 0.08       3

到此这篇关于R语言随机抽样的文章就介绍到这了,更多相关R语言随机抽样内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

R语言随机抽样详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

R语言随机抽样详解

这篇文章主要介绍了R语言随机抽样,从总体中抽取样本的方法很多,最常用的方法是简单随机抽样,本文给大家详细讲解结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
2022-11-13

R语言生成随机数的方法

这篇文章主要介绍R语言生成随机数的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.概述作为一种语言进行统计分析,R有一个随机数生成各种统计分布功能的综合性图书馆。R语言可以针对不同的分布,生成该分布下的随机数。
2023-06-14

R语言如何实现随机森林

这篇文章主要为大家展示了“R语言如何实现随机森林”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“R语言如何实现随机森林”这篇文章吧。随机森林算法介绍算法介绍:简单的说,随机森林就是用随机的方式建立
2023-06-20

r语言中怎么进行数据采样和抽样操作

在R语言中,可以使用以下函数来进行数据采样和抽样操作:从数据集中随机抽取样本:sample(data, size, replace = FALSE)其中,data为要抽样的数据集,size为抽样的样本大小,replace为是否允许重复抽样(
r语言中怎么进行数据采样和抽样操作
2024-03-06

r语言怎么生成随机数整数

在R语言中,可以使用以下几个函数来生成随机整数:1. `sample()`函数:可以从指定的整数序列中随机抽取一个或多个整数。例如,`sample(1:10, 1)`将从1到10的整数序列中随机抽取一个整数。2. `sample.int()
2023-09-04

C语言怎么实现随机抽奖程序

要实现随机抽奖程序,可以按照以下步骤进行:1. 导入头文件:```c#include #include #include ```2. 定义抽奖函数:```cint lottery(int min, int max) {// 使用当前时间作为
2023-08-18

R语言中怎么实现随机森林算法

在R语言中,您可以使用 randomForest 包来实现随机森林算法。以下是一个简单的示例代码,演示如何在R中使用随机森林算法进行分类或回归:首先,安装并加载 randomForest 包:install.packages("rando
R语言中怎么实现随机森林算法
2024-04-03

使用R语言怎么生成一个随机数

这篇文章给大家介绍使用R语言怎么生成一个随机数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 均匀分布函数: runif(n, min=0, max=1),n 表示生成的随机数数量,min 表示均匀分布的下限,ma
2023-06-13

R语言中aggregate 函数详解

这篇文章主要介绍了R语言中aggregate 函数的相关资料,aggregate函数是数据处理中常用到的函数,具有强大的功能,可以按照要求把数据打组聚合,然后对聚合以后的数据进行加和、求平均等各种操作,需要的朋友可以参考下
2023-05-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录