Difference between revisions of "SurveyCTO Best Practices"

Jump to: navigation, search
 
(5 intermediate revisions by the same user not shown)
Line 8: Line 8:


== Read First ==  
== Read First ==  
* The '''SurveyCTO Best Practices''' are part of the '''iesurveykit''' package by DIME Analytics.  
* The '''SurveyCTO Best Practices''' are part of the package, [https://github.com/dime-worldbank/iesurveykit iesurveykit] by DIME Analytics.
* Along with the SurveyCTO Style Guide, the best practices list out the practices programmers should keep in mind to make surveys more efficient and easier to work with.
* Along with the SurveyCTO Style Guide, the best practices list out the practices programmers should keep in mind to make surveys more efficient and easier to work with.
*** To contribute to this resource, please email [mailto:dimeanalytics@worldbank.org|DIME Analytics].
*** To contribute to this resource, please email [mailto:dimeanalytics@worldbank.org DIME Analytics].


== To support efficiency for the programmer ==  
== To support efficiency for the programmer ==  
Line 29: Line 29:
# '''Avoid asking the same question multiple times'''. Using the ''repeat groups'' feature.
# '''Avoid asking the same question multiple times'''. Using the ''repeat groups'' feature.
# '''For modules, apply relevance condition to the entire module.''' Instead of adding a relevance condition for each question, you can apply the relevance condition once to the entire group.
# '''For modules, apply relevance condition to the entire module.''' Instead of adding a relevance condition for each question, you can apply the relevance condition once to the entire group.
# '''Avoid asking a separate question for cases where user chooses "Other".''' You can use the "specify_other" field plug-in. For more information on other field plug-ins by SurveyCTO, refer to the [https://support.surveycto.com/hc/en-us/articles/360045235134-Field-plug-in-catalog|SurveyCTO field plug-in catalog].
# '''Avoid asking a separate question for cases where user chooses "Other".''' You can use the "specify_other" field plug-in. For more information on other field plug-ins by SurveyCTO, refer to the [https://support.surveycto.com/hc/en-us/articles/360045235134-Field-plug-in-catalog SurveyCTO Field Plug-in Catalog].


== To support efficiency for the data collector/enumerator ==
== To support efficiency for the data collector/enumerator ==
Line 38: Line 38:
# '''Simplify form navigation''' - you can do this using ''field-list'' appearance option to display a group of questions on the same page. Similarly, you can use ''quick'' appearance option to move to the next screen from a ''select_one'' question.
# '''Simplify form navigation''' - you can do this using ''field-list'' appearance option to display a group of questions on the same page. Similarly, you can use ''quick'' appearance option to move to the next screen from a ''select_one'' question.
# '''Include instructions for the enumerator''' - using hints.
# '''Include instructions for the enumerator''' - using hints.
# '''Manage and track a sample of respondents''' - using the [https://docs.surveycto.com/03-collecting-data/03-data-collection-workflow/02.case-management.html|case-management functionality].
# '''Manage and track a sample of respondents''' - using the [https://docs.surveycto.com/03-collecting-data/03-data-collection-workflow/02.case-management.html case-management functionality].


== To support quality assurance and ease of analyzing/using data collected  ==
== To support quality assurance and ease of analyzing/using data collected  ==
==== Program the survey to identify data quality issues in real-time ====
==== Program the survey to identify data quality issues in real-time ====
# '''Add pop-up messages for values that are out of range''' - using constraints and constraint messages. You can also reference values in previous fields to confirm if the information entered is correct. For example, "You indicated you have 5 members in your household. Is that correct?". Also refer to [https://support.surveycto.com/hc/en-us/articles/360015295234-Guide-to-constraints-the-basics-on-rejecting-invalid-answers-part-1#:~:text=SurveyCTO%20has%20features%20to%20help,option%20to%20build%20a%20constraint.|SurveyCTO's guide to constraints].
# '''Add pop-up messages for values that are out of range''' - using constraints and constraint messages. You can also reference values in previous fields to confirm if the information entered is correct. For example, "You indicated you have 5 members in your household. Is that correct?". Also refer to [https://support.surveycto.com/hc/en-us/articles/360015295234-Guide-to-constraints-the-basics-on-rejecting-invalid-answers-part-1#:~:text=SurveyCTO%20has%20features%20to%20help,option%20to%20build%20a%20constraint. SurveyCTO's guide to constraints].
# '''Include time stamps''' - using ''calculate_here'' field.
# '''Include time stamps''' - using ''calculate_here'' field.
# '''Avoid the need for enumerator to perform calculations during a survey.''' You can do this using ''calculate'' fields. For example, if total savings are only from cash savings and savings in the form of jewellery, and the survey has already asked total savings for a household and cash savings, then best practice is to include a calculation/constraint for the question on savings in the form of jewellery
# '''Avoid the need for enumerator to perform calculations during a survey.''' You can do this using ''calculate'' fields. For example, if total savings are only from cash savings and savings in the form of jewellery, and the survey has already asked total savings for a household and cash savings, then best practice is to include a calculation/constraint for the question on savings in the form of jewellery
# '''Avoid missing data for important variables''' - by marking questions as required.
# '''Avoid missing data for important variables''' - by marking questions as required.
# '''Avoid using different values for the same option.''' Use standardized choice lists across survey. For example, code "I don’t know" as -99, "Prefer not to answer" as -77, and so on.
# '''Avoid using different values for the same option.''' Use standardized choice lists across survey. For example, code "I don’t know" as -99, "Prefer not to answer" as -77, and so on.
== To secure personal data ==
==== Ensure collected data is secure ====
# '''Use access roles on your SurveyCTO server''' - to limit access to data to only those who really need to use it.
# '''Encrypt your forms and data'''. Refer to the [https://github.com/worldbank/dime-standards/blob/master/dime-research-standards/pillar-4-data-security/data-security-resources/surveycto-encryption-guidelines.md DIME Analytics Guide to Encryption in SurveyCTO]

Latest revision as of 14:57, 8 May 2024

DIME Analytics has created the SurveyCTO Best Practices to outline the common practices to follow in order to program surveys more efficiently.

The SurveyCTO Best Practices are designed to support the following 4 objectives:

  1. To support efficiency for the programmer
  2. To support efficiency for the data collector
  3. To support quality assurance and ease of analyzing the collected data
  4. To secure personal data

Read First

  • The SurveyCTO Best Practices are part of the package, iesurveykit by DIME Analytics.
  • Along with the SurveyCTO Style Guide, the best practices list out the practices programmers should keep in mind to make surveys more efficient and easier to work with.

To support efficiency for the programmer

In this first section, we discuss best practices to program surveys more efficiently. We assume that we are starting with a well-designed questionnaire already - see here for guidelines.

Don't reinvent the wheel

  • Start a questionnaire on SurveyCTO's online interface. SurveyCTO's Online Form Builder sets up an easy-to-use Excel form. Use this to define general outline of the questionnaire, and then download the form in Excel to edit further.
  • Make use of pre-existing programmed surveys where available. The SurveyCTO Hub, for example, provides templates that can be deployed as-is, edited to fit your needs, or used as a starting point for building your own workflows.

Make the programmed instrument easier to read and review

You can do this in the following ways:

  1. Create separate modules. You can do this using groups in your Excel form.
  2. Visually separate your modules. You can do so by inserting blank rows after an end group field, and before the next begin group field.
  3. Visually distinguish question types. This can be done by the in-build color-coding in the downloaded template from SurveyCTO.

Keep the programmed questionnaire as lean as possible

  1. Avoid programming large choice lists - using pre-loaded data.
  2. Where possible, use data collected previously. For follow-up surveys, make use of pre-loaded baseline survey data for questions for which the answers will not change. For example, name of household head.
  3. Avoid creating multiple choice lists. Where possible, re-use the same choice list for multiple questions. For example, for all questions that have "Yes" and "No" as the only answer choices, make only one choice list.
  4. Avoid asking the same question multiple times. Using the repeat groups feature.
  5. For modules, apply relevance condition to the entire module. Instead of adding a relevance condition for each question, you can apply the relevance condition once to the entire group.
  6. Avoid asking a separate question for cases where user chooses "Other". You can use the "specify_other" field plug-in. For more information on other field plug-ins by SurveyCTO, refer to the SurveyCTO Field Plug-in Catalog.

To support efficiency for the data collector/enumerator

Make the enumerators’ jobs as simple as possible

  1. Use choice lists that can change dynamically based on response to select_one or select_multiple field - using Choice filters. See this resource for more information.
  2. Make text easier to read - using HTML tags
  3. Simplify form navigation - you can do this using field-list appearance option to display a group of questions on the same page. Similarly, you can use quick appearance option to move to the next screen from a select_one question.
  4. Include instructions for the enumerator - using hints.
  5. Manage and track a sample of respondents - using the case-management functionality.

To support quality assurance and ease of analyzing/using data collected

Program the survey to identify data quality issues in real-time

  1. Add pop-up messages for values that are out of range - using constraints and constraint messages. You can also reference values in previous fields to confirm if the information entered is correct. For example, "You indicated you have 5 members in your household. Is that correct?". Also refer to SurveyCTO's guide to constraints.
  2. Include time stamps - using calculate_here field.
  3. Avoid the need for enumerator to perform calculations during a survey. You can do this using calculate fields. For example, if total savings are only from cash savings and savings in the form of jewellery, and the survey has already asked total savings for a household and cash savings, then best practice is to include a calculation/constraint for the question on savings in the form of jewellery
  4. Avoid missing data for important variables - by marking questions as required.
  5. Avoid using different values for the same option. Use standardized choice lists across survey. For example, code "I don’t know" as -99, "Prefer not to answer" as -77, and so on.

To secure personal data

Ensure collected data is secure

  1. Use access roles on your SurveyCTO server - to limit access to data to only those who really need to use it.
  2. Encrypt your forms and data. Refer to the DIME Analytics Guide to Encryption in SurveyCTO