0

在 R 中,如果我使用调查包中的 svytotal 函数生成从一个县迁移到其他几个县的人数的估计值和标准误差,然后使用相同的函数进行相反方向的迁移,如何我计算净迁移和相应的标准误?以下是我如何从IPUMS数据计算单向迁移:

mig_count_left=as.data.frame(svytotal(~nowpuma,design=subset(pums_design,left==1)))

nowpuma是一个人目前居住的地方名称的一个因素。当此人已被确定离开他/她以前的县时,left等于 1。结果如下所示:

                                                                  total         SE
nowpumaAllegany & Garrett Counties                                  342  134.08951
nowpumaAnne Arundel County                                         2132  851.19956
nowpumaBaltimore County                                            5473 1153.62968
etc...

我希望有类似的东西:

in_out_df=merge(mig_count_left,mig_count_entered,by=row.names) #put in & out migration in a single dataframe
in_out_df$net=in_out_df$total_left-in_out_df$total_entered #compute net
in_out_df$net_SE=????   #calculate standard error for the net migration
4

1 回答 1

1

你能用我已经给你的代码写一个循环来为所有美洲狮计算这个吗?

# loop through one puma at a time
for ( asp in all.state.pumas ){

    pums_design <- 
        update( 
            pums_design , 
            this.net.migration = 
                ifelse( nowpuma == asp & prevpuma != asp , -1 ,
                ifelse( prevpuma == asp & nowpuma != asp , 1 ,
                0 ) )
        )

    # compute in-migration, out-migration, and net migration for the current puma
    # with all standard errors
    out <-
        svytotal( 
            ~ as.numeric( nowpuma == asp & prevpuma != asp ) +
            as.numeric( prevpuma == asp & nowpuma != asp  ) +
            this.net.migration , 
            pums_design 
        )

    # stack `out` with all the other pumas
}
于 2014-10-24T08:43:15.577 回答