R survey - 多级设计的两相函数和警告
R survey - twophase function and warnings with multistage designs
我想使用 R 包 survey
指定具有分层三阶段抽样设计的两阶段设计对象。当多个阶段传递给 twophase
函数的 id
参数时,我收到以下警告:
Warning messages:
1: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
此警告消息的来源可能是什么?
下面是一个使用 simulated data.
的可重现示例
> library(survey)
> load('./simdata.RData')
> str(simdata)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 3690 obs. of 10 variables:
$ strat : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
$ block : int 7 7 7 7 7 9 9 9 9 9 ...
$ house : int 510 512 516 523 536 578 583 592 595 619 ...
$ ind : int 999 1003 1013 1026 1049 1138 1149 1167 1171 1214 ...
$ P.block: num 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
$ P.house: num 0.18 0.18 0.18 0.18 0.025 0.18 0.18 0.18 0.18 0.18 ...
$ P.ind : num 0.357 0.357 0.357 0.357 0.357 ...
$ phase2 : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ age : num 42.7 21.5 32.2 36.9 44.1 ...
$ bmi : num 31.1 25.9 23.7 28.9 23.7 ...
>
> twophase.design = twophase(id=list(~block+house+ind,~1),
+ strata=list(~strat,NULL),
+ probs=list(~P.block+P.house+P.ind,NULL),
+ subset=~phase2,
+ data=simdata,method='full')
There were 50 or more warnings (use warnings() to see the first 50)
>
> head(warnings())
Warning messages:
1: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
5: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
6: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
谢谢!
更新:
我在用另一组 simulated data 尝试 twophase
时也收到以下错误消息:
> load('./simdata1.RData')
> str(simdata1)
'data.frame': 3468 obs. of 10 variables:
$ strat : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
$ block : int 4 9 9 9 9 9 9 9 9 9 ...
$ house : int 435 586 587 594 613 619 619 621 634 634 ...
$ ind : int 854 1157 1158 1170 1203 1213 1214 1218 1242 1243 ...
$ P.block: num 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
$ P.house: num 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 ...
$ P.ind : num 0.55 0.55 0.357 0.55 0.357 ...
$ phase2 : logi TRUE FALSE FALSE FALSE FALSE FALSE ...
$ age : num 47.8 54 38 69.4 33.2 ...
$ bmi : num 28 50.5 35.8 37.5 27.1 ...
> twophase.design = twophase(id=list(~block+house+ind,~1),
+ strata=list(~strat,NULL),
+ probs=list(~P.block+P.house+P.ind,NULL),
+ subset=~phase2,
+ data=simdata1,method='full')
Error in Dcheck_subset(strata[uid, stage], insubset, probs[uid, stage], :
subscript out of bounds
这是一个错误。
正在使用
twophase.design = twophase(id=list(~block,~1),
strata=list(~strat,NULL),
probs=list(~I(P.block*P.house*P.ind, NULL),
subset=~phase2, data=simdata1, method='full')
将很好地近似于预期的设计——因为在第 1 阶段没有给出有限总体校正,第 1 阶段的设计被视为有放回抽样,只有第一阶段的抽样会影响标准错误。
修复将在调查包的版本 3.35-1 中
我想使用 R 包 survey
指定具有分层三阶段抽样设计的两阶段设计对象。当多个阶段传递给 twophase
函数的 id
参数时,我收到以下警告:
Warning messages:
1: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
此警告消息的来源可能是什么?
下面是一个使用 simulated data.
的可重现示例> library(survey)
> load('./simdata.RData')
> str(simdata)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 3690 obs. of 10 variables:
$ strat : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
$ block : int 7 7 7 7 7 9 9 9 9 9 ...
$ house : int 510 512 516 523 536 578 583 592 595 619 ...
$ ind : int 999 1003 1013 1026 1049 1138 1149 1167 1171 1214 ...
$ P.block: num 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
$ P.house: num 0.18 0.18 0.18 0.18 0.025 0.18 0.18 0.18 0.18 0.18 ...
$ P.ind : num 0.357 0.357 0.357 0.357 0.357 ...
$ phase2 : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ age : num 42.7 21.5 32.2 36.9 44.1 ...
$ bmi : num 31.1 25.9 23.7 28.9 23.7 ...
>
> twophase.design = twophase(id=list(~block+house+ind,~1),
+ strata=list(~strat,NULL),
+ probs=list(~P.block+P.house+P.ind,NULL),
+ subset=~phase2,
+ data=simdata,method='full')
There were 50 or more warnings (use warnings() to see the first 50)
>
> head(warnings())
Warning messages:
1: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
5: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
6: In `[<-.factor`(`*tmp*`, i, value = 1L) : invalid factor level, NA generated
谢谢!
更新:
我在用另一组 simulated data 尝试 twophase
时也收到以下错误消息:
> load('./simdata1.RData')
> str(simdata1)
'data.frame': 3468 obs. of 10 variables:
$ strat : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
$ block : int 4 9 9 9 9 9 9 9 9 9 ...
$ house : int 435 586 587 594 613 619 619 621 634 634 ...
$ ind : int 854 1157 1158 1170 1203 1213 1214 1218 1242 1243 ...
$ P.block: num 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ...
$ P.house: num 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 0.18 ...
$ P.ind : num 0.55 0.55 0.357 0.55 0.357 ...
$ phase2 : logi TRUE FALSE FALSE FALSE FALSE FALSE ...
$ age : num 47.8 54 38 69.4 33.2 ...
$ bmi : num 28 50.5 35.8 37.5 27.1 ...
> twophase.design = twophase(id=list(~block+house+ind,~1),
+ strata=list(~strat,NULL),
+ probs=list(~P.block+P.house+P.ind,NULL),
+ subset=~phase2,
+ data=simdata1,method='full')
Error in Dcheck_subset(strata[uid, stage], insubset, probs[uid, stage], :
subscript out of bounds
这是一个错误。
正在使用
twophase.design = twophase(id=list(~block,~1),
strata=list(~strat,NULL),
probs=list(~I(P.block*P.house*P.ind, NULL),
subset=~phase2, data=simdata1, method='full')
将很好地近似于预期的设计——因为在第 1 阶段没有给出有限总体校正,第 1 阶段的设计被视为有放回抽样,只有第一阶段的抽样会影响标准错误。
修复将在调查包的版本 3.35-1 中