抱歉,我是这个节目的新手。我有一些问题,因为标题意味着,因为R给我以下错误,在阶层5中没有足够的obervations。我必须对坎帕尼亚(意大利)的五个省进行分层抽样,我有这样的数据:
dati1$Rip <- matrix(dati1$A3.factor, nrow=N, ncol=1)
dati1$A3.factor <- factor(dati1$A3, labels=c("Av","Bn","Ce","Na","Sa"))
dati1$A3.factor
[1] Sa Bn Sa Sa Sa Sa Sa Sa Sa Sa Sa Sa Av Sa Sa Bn Bn Bn Sa Bn Bn Bn Bn Bn Bn
[26] Bn Sa Bn Sa Bn Sa Bn Bn Na Av Bn Bn Av Sa Bn Bn Bn Sa Bn Bn Sa Sa Bn Bn Bn
[51] Av Bn Bn Bn Bn Sa Bn Sa Bn Bn Bn Sa Sa Na Sa Av Sa Bn Bn Bn Sa Sa Bn Sa Sa
[76] Sa Sa Na Bn Bn Bn Av Av Bn Bn Bn Bn Bn Bn Bn Bn Na Bn Bn Sa Bn Ce Na Ce Sa
Levels: Av Bn Ce Na Sa
问题在于,当我做
时 library(sampling)
N <- dim(dati1)[1]
N
a <- 0.05
z_a <- qnorm(1-a/2)
error <- 0.20
Vo <- error^2/z_a^2
Vo
n <- ((Vo/p*(1-p)) + (1/N))^(-1)
n <- round(n)
n
ripartizione <- factor(dati1$A3, labels=c("Av","Bn","Ce","Na","Sa"))
Nh <- table(ripartizione)
Nh
f <- (n/N)*Nh
f
nh <-round(f)
nh
所以nh是
Av Bn Ce Na Sa
3 25 1 2 17
来自N:
Av Bn Ce Na Sa
7 51 2 5 35
为什么当我发出命令时:
sample.strata <- strata(dati1,c("Rip"), size=c(3,25,1,2,17), "srswor", TRUE)
sample.strata
R说
error in strata(dati1, c("Rip"), size = c(3, 25, 1, 2, 17), "srswor", :
not enough obervations in the stratum 5
我该怎么办?
答案 0 :(得分:4)
help(strata)
页面告诉您对data.frame进行排序。所以这成功了:
sample.strata <- strata(dati1[order(dati1$Rip),],c("Rip"),
size=c(3,25,1,2,17), "srswor", TRUE)
将它作为一个矩阵当然会将一个因素转化为它的数字基础,所以如果你希望有一个有意义的标签,那么你就可以通过矩阵格式“射击自己”。
> table(sample.strata$Stratum)
1 2 3 4 5
3 25 1 2 17