Love Umesi
2022-Jan-26 02:07 UTC
[R] Need help with writing survey design for multilevel analysis
Hello, I am new in using R, and I need to run a multilevel analysis (on two levels) using Cox frailty survival model on a survey data (Nigeria Demographic and Health Survey Data). My problem is how to write the design weight using the two weights needed and apply them to the analysis. I have identified the needed variables for the survey design, which are : psu/cluster=~v021 individual-level weight=~wt1_1 cluster-level weigh=~wt2_1 strata/stratum=~v022 Please can someone help me with the survey design (svydesign) code and how to include it and the weights in a model. I have tried to generate a minimum reproducible data To view the minimum reproducible data: datapasta::df_paste (head(rcom2018, 10)[, c('pid', 'study_time', 'died', 'v021', 'v022', 'wt2_1', 'wt1_1', 'v024', 'v025', 'mat_edu')]) I understand I have to use svycoxph in the model. Please how do I include survey design and account for the 2 weights in the gamma frailty model below? Frailty1 <- coxph (Surv(study_time, died) ~ factor(v024) + factor(mat_edu) + v025 + frailty(v021,distribution="gamma"), data=rcom2018) Really looking forward to your help as my project is hanging on this. Many thanks. Love Umesi library(survey)#> Warning: package 'survey' was built under R version 4.0.5#> Loading required package: grid#> Loading required package: Matrix#> Loading required package: survival#> Warning: package 'survival' was built under R version 4.0.5#> #> Attaching package: 'survey'#> The following object is masked from 'package:graphics':#> #> dotchart library(survival) rcom1 <- data.frame( pid = c(1,2,3,4, 5,6,7,8,9,10,11,12,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50), study_time = c(13,9,17, 31,39,22,24,0,23,12,9,35,18,20,60, 18,5,46,26,54,37,51,31,55,27,15,39,6, 29,0,9,40,23,12,35,56,14,40,57,42, 5,42,39,39,54,19,52,42,7,28), died = c(0,0,0,0, 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), v021 = c(1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,3, 3,3,3,3,3,3,3,3,3,3,3,3,3,4,4), v022 = c("1","1", "1","1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1"), v012 = c(40,37,27, 27,24,32,35,35,34,20,28,28,26,24,24, 25,26,26,26,26,28,27,25,25,27,26, 26,21,21,31,36,36,27,23,32,32,33,33, 33,28,25,37,33,34,33,28,28,29,33,33), wt2_1 c(401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031, 401.200012207031,401.200012207031, 401.200012207031,401.200012207031,401.200012207031), wt1_1 c(2.5074667930603,2.5074667930603,2.5074667930603, 2.5074667930603,2.5074667930603,2.5074667930603, 2.5074667930603,2.5074667930603,2.5074667930603, 2.5074667930603,2.5074667930603, 2.5074667930603,2.5074667930603,2.5074667930603, 2.5074667930603,5.1194109916687,5.1194109916687, 5.1194109916687,5.1194109916687,5.1194109916687, 5.1194109916687,5.1194109916687, 5.1194109916687,5.1194109916687,5.1194109916687, 5.1194109916687,5.1194109916687,5.1194109916687, 5.1194109916687,5.1194109916687,5.1194109916687, 5.1194109916687,5.1194109916687, 5.1194109916687,2.40910983085632,2.40910983085632, 2.40910983085632,2.40910983085632,2.40910983085632, 2.40910983085632,2.40910983085632, 2.40910983085632,2.40910983085632,2.40910983085632, 2.40910983085632,2.40910983085632,2.40910983085632, 2.40910983085632,1.06203985214233, 1.06203985214233), v024 = c("1","1", "1","1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1"), v025 = c("1","1", "1","1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1","1", "1","1","1","1","1","1","1","1","1", "1"), mat_edu = c("5","5", "5","4","4","5","4","4","4","4","4","4", "5","5","5","5","5","5","4","4","5", "4","4","4","5","3","3","4","4","5", "5","5","5","4","2","2","0","0","0","5", "5","0","1","5","5","3","3","5","5", "5") ) Frailty1 <- coxph (Surv(study_time, died) ~ factor(v024) + factor(mat_edu) + v025 + frailty(v021,distribution="gamma"), data=rcom1)#> Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]): contrasts can be applied only to factors with 2 or more levels [[alternative HTML version deleted]]
Jim Lemon
2022-Jan-28 02:47 UTC
[R] Need help with writing survey design for multilevel analysis
Hi Love, I'm not entirely on top of your question, but perhaps if you look at this: https://cran.r-project.org/web/packages/pricesensitivitymeter/vignettes/using-weighted-data.html it will get you started. Feel free to repost if this doesn't solve your problem. Jim On Wed, Jan 26, 2022 at 8:18 PM Love Umesi <yugohlav at gmail.com> wrote:> > Hello, > > I am new in using R, and I need to run a multilevel analysis (on two > levels) using Cox frailty survival model on a survey data (Nigeria > Demographic and Health Survey Data). > > My problem is how to write the design weight using the two weights needed > and apply them to the analysis. > > I have identified the needed variables for the survey design, which are : > > psu/cluster=~v021 > individual-level weight=~wt1_1 > cluster-level weigh=~wt2_1 > strata/stratum=~v022 > > Please can someone help me with the survey design (svydesign) code and how > to include it and the weights in a model. > > I have tried to generate a minimum reproducible data > > To view the minimum reproducible data: datapasta::df_paste (head(rcom2018, > 10)[, c('pid', 'study_time', 'died', 'v021', 'v022', 'wt2_1', 'wt1_1', > 'v024', 'v025', 'mat_edu')]) > > > I understand I have to use svycoxph in the model. Please how do I include > survey design and account for the 2 weights in the gamma frailty model > below? > > Frailty1 <- coxph (Surv(study_time, died) ~ factor(v024) + factor(mat_edu) > + v025 + frailty(v021,distribution="gamma"), data=rcom2018) > > > Really looking forward to your help as my project is hanging on this. > > Many thanks. > > Love Umesi > > library(survey)#> Warning: package 'survey' was built under R version > 4.0.5#> Loading required package: grid#> Loading required package: > Matrix#> Loading required package: survival#> Warning: package > 'survival' was built under R version 4.0.5#> #> Attaching package: > 'survey'#> The following object is masked from 'package:graphics':#> > #> dotchart > library(survival) > > > rcom1 <- data.frame( > pid = c(1,2,3,4, > 5,6,7,8,9,10,11,12,13,14,15,16,17, > 18,19,20,21,22,23,24,25,26,27,28,29, > 30,31,32,33,34,35,36,37,38,39,40, > 41,42,43,44,45,46,47,48,49,50), > study_time = c(13,9,17, > 31,39,22,24,0,23,12,9,35,18,20,60, > 18,5,46,26,54,37,51,31,55,27,15,39,6, > 29,0,9,40,23,12,35,56,14,40,57,42, > 5,42,39,39,54,19,52,42,7,28), > died = c(0,0,0,0, > 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, > 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), > v021 = c(1,1,1,1, > 1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2, > 2,2,2,2,2,2,2,2,2,2,2,2,2,2,3, > 3,3,3,3,3,3,3,3,3,3,3,3,3,4,4), > v022 = c("1","1", > "1","1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1"), > v012 = c(40,37,27, > 27,24,32,35,35,34,20,28,28,26,24,24, > 25,26,26,26,26,28,27,25,25,27,26, > 26,21,21,31,36,36,27,23,32,32,33,33, > 33,28,25,37,33,34,33,28,28,29,33,33), > wt2_1 > c(401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031, > 401.200012207031,401.200012207031, > > 401.200012207031,401.200012207031,401.200012207031), > wt1_1 > c(2.5074667930603,2.5074667930603,2.5074667930603, > > 2.5074667930603,2.5074667930603,2.5074667930603, > > 2.5074667930603,2.5074667930603,2.5074667930603, > 2.5074667930603,2.5074667930603, > > 2.5074667930603,2.5074667930603,2.5074667930603, > > 2.5074667930603,5.1194109916687,5.1194109916687, > > 5.1194109916687,5.1194109916687,5.1194109916687, > 5.1194109916687,5.1194109916687, > > 5.1194109916687,5.1194109916687,5.1194109916687, > > 5.1194109916687,5.1194109916687,5.1194109916687, > > 5.1194109916687,5.1194109916687,5.1194109916687, > 5.1194109916687,5.1194109916687, > > 5.1194109916687,2.40910983085632,2.40910983085632, > > 2.40910983085632,2.40910983085632,2.40910983085632, > 2.40910983085632,2.40910983085632, > > 2.40910983085632,2.40910983085632,2.40910983085632, > > 2.40910983085632,2.40910983085632,2.40910983085632, > 2.40910983085632,1.06203985214233, > 1.06203985214233), > v024 = c("1","1", > "1","1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1"), > v025 = c("1","1", > "1","1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1","1", > "1","1","1","1","1","1","1","1","1", > "1"), > mat_edu = c("5","5", > "5","4","4","5","4","4","4","4","4","4", > "5","5","5","5","5","5","4","4","5", > "4","4","4","5","3","3","4","4","5", > "5","5","5","4","2","2","0","0","0","5", > "5","0","1","5","5","3","3","5","5", > "5") > ) > > Frailty1 <- coxph (Surv(study_time, died) ~ factor(v024) + > factor(mat_edu) + v025 + frailty(v021,distribution="gamma"), > data=rcom1)#> Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + > isOF[nn]]): contrasts can be applied only to factors with 2 or more > levels > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.