R语言 分层抽样---分层随机抽样(SRS) strata的使用(一)
来源:互联网 发布:idg 知乎 编辑:程序博客网 时间:2024/05/01 17:52
R语言 分层抽样---分层随机抽样(SRS) strata的使用
例子 一:
手动创新一个数据框,如下。
test a b c d1 2 qw a1 y2 2 qw a1 y3 3 we b1 y4 4 er b1 y5 4 er c1 y6 5 wd c1 y7 5 rt d1 y8 6 rt d2 n9 7 we d1 n10 7 we d1 n11 8 we d1 n12 8 we d1 n13 8 we d1 n14 9 we d1 n15 9 we d1 n16 9 we d1 n17 10 we d1 y18 10 we d1 y19 10 we d1 y20 10 we d1 y21 10 we d1 y22 10 we d1 y23 11 we d1 y24 11 we d1 y25 11 we d1 y26 11 we d1 y27 11 we d1 y28 11 we d1 y29 11 we d1 y30 11 we d1 y
查看各层分布情况:
table(test$d) n y 9 21
排序:test=test[order(test$d),]
语法:
strata(data, stratanames=NULL, size, method=c("srswor","srswr","poisson","systematic"), pik,description=FALSE)
data: 带抽样数据。
stratanames: 进行分层所依据的变量名称。
size: 各层中要抽出的观测样本数。
method: 选择4中抽样方法,分别为无放回、有放回、泊松、系统抽样,默认为srswor。
pik: 设置各层中样本的抽样概率。
description: 选择是否输出含有各层基本信息的结果。
四个任选一:c("srswor","srswr","poisson","systematic")
用法:
sized1= round(0.7*length(test$d))
sized2=1-sized1
选择某一列作为分层依据:这里例子选的是 d 列
st=strata(test,stratanames=c("d"),size=c(sized), method="srswor")
分层后的数据:(ID_unit,是每层随机行被选中了,同时显示行的ID,Prob 是分层的概率,Stratum是分了多少层)
st d ID_unit Prob Stratum28 y 28 0.1428571 129 y 29 0.1428571 130 y 30 0.1428571 18 n 8 0.7777778 29 n 9 0.7777778 211 n 11 0.7777778 212 n 12 0.7777778 213 n 13 0.7777778 214 n 14 0.7777778 215 n 15 0.7777778 2
这里再次用pik来说明一下分层效果:st=strata(test,stratanames=c("d"),size=c(sized),pik=c(.25,.75), method="srswor")> st d ID_unit Prob Stratum5 y 5 0.1428571 17 y 7 0.1428571 123 y 23 0.1428571 18 n 8 0.7777778 210 n 10 0.7777778 211 n 11 0.7777778 212 n 12 0.7777778 213 n 13 0.7777778 214 n 14 0.7777778 216 n 16 0.7777778 2查看分层后的全部数据:
getdata(test,st)
b c a ID_unit Prob Stratum1 qw a1 2 1 0.5 13 we b1 3 3 1.0 24 er b1 4 4 0.5 36 wd c1 5 6 0.5 48 rt d2 6 8 1.0 5拿出b,c,a放到数据框.testdata<-getdata(test,st)
testdata<-as.data.frame(testdata)
执行三次
testdata[-4]
分层完毕:
> testdata b c a1 qw a1 23 we b1 34 er b1 46 wd c1 58 rt d2 6例子二:引用R包sampling 的数据
library(sampling)ps.options(pointsize=12)options(width=60)
###################################################### code chunk number 2: calib1###################################################data = rbind(matrix(rep("A", 150), 150, 1, byrow = TRUE), matrix(rep("B", 100), 100, 1, byrow = TRUE))data = cbind.data.frame(data, c(rep(1, 60), rep(2,50), rep(3, 60), rep(1, 40), rep(2, 40)), 1000 * runif(250))sex = runif(nrow(data))for (i in 1:length(sex)) if (sex[i] < 0.3) sex[i] = 1 else sex[i] = 2data = cbind.data.frame(data, sex)names(data) = c("state", "region", "income", "sex")summary(data)
###################################################### code chunk number 3: calib2###################################################table(data$state)
s=strata(data,c("state"),size=c(25,20), method="srswor")
##s=strata(data,c("state"),size=c(25,20),pik=c(.75,.25) method="srswor") 用了pik产生的值差不多。
s=getdata(data,s)
0 0
- R语言 分层抽样---分层随机抽样(SRS) strata的使用(一)
- [置顶]R语言 分层抽样---分层随机抽样(SRS)(二 )
- R语言 分层抽样 strata (三),每层抽取80%
- R语言随机抽样
- 随机抽样(分层抽样)和朴素贝叶斯分类
- R语言随机抽样sample
- python实现的分层随机抽样
- R随机抽样
- R语言--数据抽样的实现
- 数据挖掘:R语言实战(抽样)
- R语言:PPS抽样
- Excel在统计分析中的应用—第六章—抽样与抽样分布-Part3(分层抽样)
- R 语言与抽样分布
- 蓄水池抽样问题(随机抽样问题)
- R语言与抽样技术学习笔记(Randomize)
- R语言与抽样技术学习笔记(Jackknife)
- R语言与抽样技术学习笔记(bootstrap)
- 随机抽样方法正太分布 MC, MCMC, Gibbs采样 原理&实现(in R)
- LeetCode -- Palindrome Partitioning
- UVa12100 Printer Queue (打印队列)
- LeetCode -- Pow(x, n)
- LeetCode -- Rectangle Area
- 疯狂Html+CSS+JS 中JS总结
- R语言 分层抽样---分层随机抽样(SRS) strata的使用(一)
- Shiro系列之Shiro+Mysql实现用户认证(Authentication)
- 在retina屏中实现1px border效果
- PhantomJS基础及示例
- jquery 选择器写法
- 多线程
- QTP\UFT11.5破解
- POJ月赛题目Matrix Power Series
- Language of FatMouse(trie树)