Skip to content

Commit c993761

Browse files
committed
sampling script further adjusted to support census sampling
1 parent 6f6e406 commit c993761

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

scripts/11_school_sampling.R

+33-7
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ sampling_function = function(datum = frame_schools,no_qnaires = 2906, no_schools
7474

7575
adj_no_qnaires = no_qnaires/(st_resprate*permission_rate*sch_resprate)
7676
adj_no_schools = ifelse(all_schools=='No',ceiling(no_schools/sch_resprate),nrow(datum)) %>% round()
77+
###
78+
if(adj_no_schools>no_schools){stop(paste0('Adjust the number of schools to a maximum of: ',floor(sch_resprate*nrow(datum))))}
7779
# Calculate the overall sampling fraction
7880
total_enrolment = sum(datum$enrolment, na.rm = T)
7981
overall_sampling_fraction = (adj_no_qnaires) / sum(datum$enrolment, na.rm = T)
@@ -85,7 +87,7 @@ sampling_function = function(datum = frame_schools,no_qnaires = 2906, no_schools
8587
##Selection of certainty schools
8688
initial_SI = round(sum(datum$enrolment, na.rm = T)/adj_no_schools)
8789
revised_SI = initial_SI
88-
mod_datum = datum
90+
mod_datum = datum
8991
# Initialize certainty_schools
9092
certainty_schools = data.frame(mod_datum[0, ])
9193

@@ -132,14 +134,18 @@ sampling_function = function(datum = frame_schools,no_qnaires = 2906, no_schools
132134
round(StudentWeight),numberOfclasses = selectClasses),
133135
collapse = ','),NA),School_Selected = 'Yes')
134136

137+
###
138+
common_variables = c('school_ID', 'school','enrolment','RevisedMOS', 'category', 'SchoolWeight', 'StudentWeight', 'classes', 'School_Selected')
139+
135140
####Updated frame only containing non-certainty schools
136141
if (nrow(certainty_schools)>0)
137142
{
138143
non_certainty_schools= mod_datum %>%
139144
dplyr::filter(eval(parse(text=paste0('!(',paste0('school_ID','==',certainty_schools$school_ID, collapse = '|'),')'))))
140145
} else{non_certainty_schools= mod_datum}
141146
#####
142-
maximum_enrolment <<- max(non_certainty_schools$enrolment, na.rm = T)
147+
#maximum_enrolment <<- max(non_certainty_schools$enrolment, na.rm = T)
148+
maximum_enrolment <<- max(datum$enrolment, na.rm = T)
143149

144150
#####
145151

@@ -169,7 +175,7 @@ sampling_function = function(datum = frame_schools,no_qnaires = 2906, no_schools
169175
#
170176
min_measure_of_size <<- non_certainty_schools$sampling_factor[non_certainty_schools$enrolment < non_certainty_schools$sampling_factor][1]
171177
# Total number of schools to be systematically selected
172-
total_schools_to_select <<- adj_no_schools - nrow(certainty_schools)
178+
total_schools_to_select <<- adj_no_schools - nrow(certainty_schools)
173179
### Adjust measures of size for noncertainty schools
174180
if(!is.na(min_measure_of_size))
175181
{
@@ -244,16 +250,36 @@ sampling_function = function(datum = frame_schools,no_qnaires = 2906, no_schools
244250
} else {}
245251

246252
# Select the schools using the computed indices
247-
common_variables = c('school_ID', 'school','enrolment','RevisedMOS', 'category', 'SchoolWeight', 'StudentWeight', 'classes', 'School_Selected')
253+
if(nrow(mod_datum)!=0)
254+
{
248255
non_certainty_schools = non_certainty_schools %>% dplyr::select(all_of(common_variables)) %>% mutate_all(as.character)
256+
}
257+
249258
certainty_schools = certainty_schools %>% dplyr::select(all_of(common_variables))%>% mutate_all(as.character)
250259
#
251260
no_schools_MOS_adj <<- sum(non_certainty_schools$RevisedMOS == min_measure_of_size, na.rm = T)
252261
schools_MOS_adjusted <<- global_sf*no_schools_MOS_adj
253-
#
254-
selected_schools = bind_rows(non_certainty_schools ,certainty_schools)
262+
#Conversion to common type
263+
264+
#selected_schools = bind_rows(non_certainty_schools ,certainty_schools)
265+
266+
if(nrow(non_certainty_schools)== 0 & nrow(certainty_schools)>0){
267+
selected_schools = certainty_schools
268+
} else if(nrow(non_certainty_schools)> 0 & nrow(certainty_schools)==1){
269+
selected_schools = non_certainty_schools
270+
}else if(nrow(non_certainty_schools)> 0 & nrow(certainty_schools)==1){
271+
selected_schools = bind_rows(non_certainty_schools ,certainty_schools)
272+
}else{}
273+
274+
275+
255276

256277
} else {
278+
total_schools_to_select <<- nrow(datum)
279+
schools_MOS_adjusted = 0
280+
min_measure_of_size = min(datum$enrolment, na.rm = T)
281+
maximum_enrolment = max(datum$enrolment, na.rm = T)
282+
257283
common_variables = c('school_ID', 'school','enrolment','RevisedMOS', 'category', 'SchoolWeight', 'StudentWeight', 'classes', 'School_Selected')
258284

259285
selected_schools = datum %>%
@@ -271,7 +297,7 @@ sampling_function = function(datum = frame_schools,no_qnaires = 2906, no_schools
271297
# {
272298
# stop(paste0('Consider increasing either the number of ',unique(datum$category),' schools to be selected or adjust the school or student response rate'))
273299
# } else{}
274-
if (any(total_schools_to_select <= schools_MOS_adjusted | (!is.na(min_measure_of_size) & (min_measure_of_size < 0 | min_measure_of_size > maximum_enrolment))))
300+
if (any(input$census == 'No' & (total_schools_to_select <= schools_MOS_adjusted | (!is.na(min_measure_of_size) & (min_measure_of_size < 0 | min_measure_of_size > maximum_enrolment)))))
275301
{
276302
output$warningUI = renderUI( {
277303
fluidRow(tags$div(tags$span(style = "color: red;",paste0('Consider increasing either the number of ',unique(global_datum$category),' schools to ' ,floor(schools_MOS_adjusted),' or adjust the school or student response rate.'))))

server.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ server <- function(input, output, session) {
863863

864864
###
865865
output$stratUI = renderUI( {
866-
if (!is.null(input$samplingframe) & input$census =='No')
866+
if (!is.null(input$samplingframe))##& input$census =='No'
867867
{
868868
frame_data = frame_data_input() %>% as.data.frame()
869869
colnames(frame_data) = tolower(colnames(frame_data))

0 commit comments

Comments
 (0)