-1

抱歉,我是这个程序的新手。我有一些问题,正如标题的意思,因为 R 给了我以下错误,在第 5 层没有足够的观察。我必须对坎帕尼亚(意大利)的五个省进行分层抽样,我有这样的数据:

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

我必须做什么?

4

1 回答 1

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 
于 2012-12-23T20:26:51.867 回答