簡體   English   中英

如何有效計算加權比例和置信區間?

[英]How to calculate weighted proportion and confidence interval efficiently?

我想知道是否有一種有效的方法來計算按其他變量分組的幾個變量的加權比例以及 95% CI? 這是我的示例數據

      sex          hpvvac  wtmec4yr ohpv06 ohpv11 ohpv16 ohpv18 ohpv26
1    Male            <NA> 67814.750      0      0      0      0      0
2    Male No HPV vaccined 12641.213      0      0      0      0      0
3  Female No HPV vaccined 51039.316      0      0      0      0      0
4    Male    HPV vaccined 19676.654      0      0      0      0      0
5  Female No HPV vaccined 11778.582      0      0      0      0      0
6    Male No HPV vaccined  9124.663      0      0      0      0      0
7    Male No HPV vaccined 10034.331      0      0      1      1      0
8    Male No HPV vaccined 17836.982      0      0      1      0      0
9    Male No HPV vaccined 48500.992      0      0      0      0      0
10 Female No HPV vaccined 19340.266      0      0      0      0      0
structure(list(sex = structure(c(1L, 1L, 2L, 1L, 2L, 1L, 1L, 
1L, 1L, 2L), .Label = c("Male", "Female"), class = "factor"), 
    hpvvac = structure(c(NA, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 
    1L), .Label = c("No HPV vaccined", "HPV vaccined"), class = "factor"), 
    wtmec4yr = c(67814.75, 12641.212890625, 51039.31640625, 19676.654296875, 
    11778.58203125, 9124.6630859375, 10034.3310546875, 17836.982421875, 
    48500.9921875, 19340.265625), ohpv06 = c(0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0), ohpv11 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ohpv16 = c(0, 
    0, 0, 0, 0, 0, 1, 1, 0, 0), ohpv18 = c(0, 0, 0, 0, 0, 0, 
    1, 0, 0, 0), ohpv26 = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), row.names = c(NA, 
10L), class = "data.frame")

wtmec4yr是我每次觀察的權重。 ohpv*是二進制變量。 我想按sexhpvvac計算ohpv*組的值 1 的比例,以及 95% CI。 我試圖手動這樣做,但我懷疑它不正確,而且效率不高。 我也試過survey包,但我每次只能計算一個變量。

d.s <- svydesign(ids=~1, data=mydt, weights =~wtmec4yr)
a <- svyby(~ohpv06, ~hpvvac+sex,d.s,svymean, na.rm=F)
ftable(a)
confint(a)

謝謝!

您可以提供公式:

library(survey)
svyby(~ohpv06+ohpv11+ohpv16+ohpv18+ohpv26, ~hpvvac+sex,d.s,svymean, na.rm=F)

或者如果您的所有列都以 ohpv 開頭:

FORM = paste("~",paste(grep("ohpv",colnames(mydt),value=TRUE),collapse=" + "))
svyby(as.formula(FORM), ~hpvvac+sex,d.s,svymean, na.rm=F)

他們都給你下面:

                                hpvvac    sex ohpv06 ohpv11
No HPV vaccined.Male   No HPV vaccined   Male      0      0
HPV vaccined.Male         HPV vaccined   Male      0      0
No HPV vaccined.Female No HPV vaccined Female      0      0
                          ohpv16   ohpv18 ohpv26 se.ohpv06 se.ohpv11
No HPV vaccined.Male   0.2840007 0.102247      0         0         0
HPV vaccined.Male      0.0000000 0.000000      0         0         0
No HPV vaccined.Female 0.0000000 0.000000      0         0         0
                       se.ohpv16 se.ohpv18 se.ohpv26
No HPV vaccined.Male   0.2211842  0.113473         0
HPV vaccined.Male      0.0000000  0.000000         0
No HPV vaccined.Female 0.0000000  0.000000         0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM