Quality Assurance - Audit This Project

From Q
Jump to navigation Jump to search

This QScript reviews missing data, recoding of values and changes to labels in a project.

Example

AUDIT REPORT
Source Values and Source Labels counted in Pick Any questions
Q14 to q23.  Social motives Q14: To be appreciated(2); 
Q14 to q23.  Social motives Q15: To be dependent(2); 
Q14 to q23.  Social motives Q16: To be successful(2); 
Q14 to q23.  Social motives Q17: To have no friends(2); 
Q14 to q23.  Social motives Q18: To be open to new experiences(2); 
Q14 to q23.  Social motives Q19: A job offering independence and creativity(2); 
Q14 to q23.  Social motives Q20: To feel unfit and out of shape(2); 
Q14 to q23.  Social motives Q21: Doing work that is meaningful(2); 
Q14 to q23.  Social motives Q22: To be powerless(2); 
Q14 to q23.  Social motives Q23: Being recognised for your work(2); 

Source values set as Missing Data
Q6_A_2: Don t Know(1); 
Q6_B_2: Don t Know(1); 
Q6_C_2: Don t Know(1); 
Q6_D_2: Don t Know(1); 
Q6_E_2: Don t Know(1); 
Q6_F_2: Don t Know(1); 

Values recoded as NaN but not set as Missing Data
Q3: 65+(10); 

Value Labels changed from their source Label
Q3: '65 or more' => '65+'; 
Q14: 'To be admired' => '1st'; 'To be appreciated' => '2nd'; 
Q15: 'To be selfish' => '1st'; 'To be dependent' => '2nd'; 
Q16: 'To be in charge' => '1st'; 'To be successful' => '2nd'; 

Labels of Variables changed from their source Label
Q1_F_c: 'Q1.  Fragments - Coke - Coded: Q1.  Fragments - Coke' => 'Coke'
Q1_E_c1: 'Q1.  Fragments - Coke - Coded: Q1.  Fragments - Diet Coke' => 'Diet Coke'
Q1_D_c: 'Q1.  Fragments - Coke - Coded: Q1.  Fragments - Coke Zero' => 'Coke Zero'
Q1_C_c1: 'Q1.  Fragments - Coke - Coded: Q1.  Fragments - Pepsi' => 'Pepsi'
Q1_A_c: 'Q1.  Fragments - Coke - Coded: Q1.  Fragments - Diet Pepsi' => 'Diet Pepsi'
Q1_B_c1: 'Q1.  Fragments - Coke - Coded: Q1.  Fragments - Pepsi Max' => 'Pepsi Max'
Q3_3: 'Q3. Age' => 'Q3. Age in years'

How to apply this QScript

  • Start typing the name of the QScript into the Search features and data box in the top right of the Q window.
  • Click on the QScript when it appears in the QScripts and Rules section of the search results.

OR

  • Select Automate > Browse Online Library.
  • Select this QScript from the list.

Customizing the QScript

This QScript is written in JavaScript and can be customized by copying and modifying the JavaScript.

Customizing QScripts in Q4.11 and more recent versions

  • Start typing the name of the QScript into the Search features and data box in the top right of the Q window.
  • Hover your mouse over the QScript when it appears in the QScripts and Rules section of the search results.
  • Press Edit a Copy (bottom-left corner of the preview).
  • Modify the JavaScript (see QScripts for more detail on this).
  • Either:
    • Run the QScript, by pressing the blue triangle button.
    • Save the QScript and run it at a later time, using Automate > Run QScript (Macro) from File.

Customizing QScripts in older versions

  • Copy the JavaScript shown on this page.
  • Create a new text file, giving it a file extension of .QScript. See here for more information about how to do this.
  • Modify the JavaScript (see QScripts for more detail on this).
  • Run the file using Automate > Run QScript (Macro) from File.

JavaScript

//checking the variable type information
var data_file = project.dataFiles[0];
var variables = data_file.variables; //gets all variables
var n_variables = variables.length;
var recoding_report = "Recoding\r\n";
var multiple_response_report = "Source Values and Source Labels counted in Pick Any questions\r\n";
var missing_values_report = "Source values set as Missing Data\r\n";
var NaN_report = "Values recoded as NaN but not set as Missing Data\r\n";
var changed_value_label_report = "Value Labels changed from their source Label\r\n";
var changed_variable_label_report = "Labels of Variables changed from their source Label\r\n";
var invalid_variables_report = "";
for (var v = 0; v < n_variables; v++){
    var variable = variables[v];
    if (variable.question.isValid) {
        if (variable.variableType != "Text"){
            var variable_name = variable.name;
            var values = variable.uniqueValues;
            var n_values = values.length;
            var changed_values = "";
            var mr = variable.question.questionType == "Pick Any";
            var counted_values = "";
            var missing_data = "";
            var NaNs = "";
            var labels = "";
            var attributes = variable.valueAttributes;
            for (var i = 0; i < n_values; i++){
                var source_value = values[i];
                var value = attributes.getValue(source_value);
                var label = attributes.getLabel(source_value);
                var source_label = attributes.getSourceLabel(source_value);
                if (source_value != value)
                    changed_values += source_value.toString() +  " => " + value.toString() + "; ";
                if (mr && attributes.getCountThisValue(source_value))
                    counted_values += source_label + "(" + source_value.toString() + "); ";
                if (attributes.getIsMissingData(source_value))
                    missing_data += label + "(" + source_value.toString() + "); ";
                else if (isNaN(value))
                    NaNs += label + "(" + source_value.toString() + "); ";
                if (source_label != label)
                    labels += "'"+source_label + "'" + " => " +  "'" + label+ "'" +"; ";
            }
        }
        if (changed_values != "") recoding_report += variable_name + ": " + changed_values + "\r\n";
        if (mr) multiple_response_report += variable.question.name + " " + variable_name + ": " + counted_values + "\r\n";
        if (missing_data != "") missing_values_report += variable_name + ": " + missing_data + "\r\n";
        if (NaNs != "") NaN_report += variable_name + ": " + NaNs + "\r\n";
        if (labels != "") changed_value_label_report += variable_name + ": " + labels + "\r\n";
        if (variable.label != variable.sourceLabel) changed_variable_label_report += variable_name + ": " +  "'" + variable.sourceLabel+  "'" +" => " +  "'" +variable.label + "'" + "\r\n";
    } else {
        invalid_variables_report = invalid_variables_report + (invalid_variables_report.length == 0 ? "Invalid Variables\r\n" : "\r\n") + variable.name;
    }
        
}
log("AUDIT REPORT\r\n" + multiple_response_report + "\r\n" + missing_values_report  + "\r\n" + NaN_report  + "\r\n" + changed_value_label_report  + "\r\n" + changed_variable_label_report + "\r\n" + invalid_variables_report);

See also