// Numbas version: exam_results_page_options {"contributors": [{"profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/7/", "name": "Christian Lawson-Perfect"}], "extensions": ["stats"], "custom_part_types": [], "metadata": {"licence": "Creative Commons Attribution 4.0 International", "description": "

This exam uses a custom theme which provides a new logo image.

", "notes": ""}, "question_groups": [{"questions": [{"name": "Integrate an expression", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"showfrontpage": false, "allowregen": true, "preventleave": false}, "contributors": [{"profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/7/", "name": "Christian Lawson-Perfect"}], "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["a", "b"], "statement": "", "metadata": {"licence": "Creative Commons Attribution 4.0 International", "description": "

Demo question: do some sneaky symbolic differentiation to check that the student's answer is the integral of the expression they're given.

\n

Needs an advice section before it can be used.

", "notes": ""}, "type": "question", "parts": [{"prompt": "

This part is marked by calculating the derivative of your answer and comparing it to the original expression.

\n

$\\displaystyle{\\int \\simplify{cos({a}x) + e^(x/{b})} \\,\\mathrm{d}x = }$ [[0]]

", "marks": 0, "gaps": [{"scripts": {}, "checkingaccuracy": 0.001, "checkvariablenames": false, "type": "jme", "answer": "cos({a}x)+e^(x/{b})", "marks": 2, "vsetrangepoints": 5, "showCorrectAnswer": true, "checkingtype": "absdiff", "showpreview": true, "vsetrange": [0, 1], "expectedvariablenames": []}], "showCorrectAnswer": true, "scripts": {}, "type": "gapfill"}], "preamble": {"js": "//*************\n// differentiation\nvar jme = Numbas.jme;\nvar TNum = Numbas.jme.types.TNum;\n\nvar functionDerivatives = {\n 'cos': '-sin(x)',\n 'sin': 'cos(x)'\n};\nvar generalFunctionDerivative = jme.compile(\"f'(x)\");\nfor(var name in functionDerivatives) {\n functionDerivatives[name] = jme.compile(functionDerivatives[name]);\n}\nvar chainRule = jme.compile(\"x'*f'\")\n var opDerivatives = {\n '+': \"u'+v'\",\n '+u': \"+u'\",\n '-u': \"-u'\",\n '-': \"u'-v'\",\n '*': \"u'*v+u*v'\",\n \"/\": \"(v*u'-v'*u)/(v^2)\"\n }\n var powerRule = jme.compile(\"v*u'*u^(v-1)\");\nvar exponentialRule = jme.compile(\"ln(u)*v'*u^v\");\nfor(var name in opDerivatives) {\n opDerivatives[name] = jme.compile(opDerivatives[name]);\n}\n\nvar differentiate = jme.differentiate = function(tree,x) {\n var tok = tree.tok;\n \n switch(tok.type) {\n case 'number':\n return {tok: new TNum(0)};\n break;\n case 'name':\n return {tok: new TNum(tok.name==x ? 1 : 0)};\n case 'op':\n var l = differentiate(tree.args[0],x,1);\n if(tree.args.length>1)\n var r = differentiate(tree.args[1],x,1);\n var scope = {variables: {\"u\": tree.args[0], \"u'\": l, \"v\": tree.args[1], \"v'\": r}};\n if(tok.name=='^') {\n if(tree.args[1].tok.type=='number' || (tree.args[1].tok.type=='op' && tree.args[1].tok.name=='-u' && tree.args[1].args[0].tok.type=='number')) {\t// f(x)^n\n return jme.substituteTree(powerRule,scope);\n }\n else if(tree.args[0].tok.type=='number' || (tree.args[0].tok.type=='op' && tree.args[0].tok.name=='-u' && tree.args[0].args[0].tok.type=='number')) {\t// n^x\n return jme.substituteTree(exponentialRule,scope);\n }\n else {\n throw(new Numbas.Error('jme.differentiate.hard exponential'));\n }\n }\n return jme.substituteTree(opDerivatives[tok.name],scope);\n case 'function':\n var df = jme.substituteTree(tok.name in functionDerivatives ? functionDerivatives[tok.name] : generalFunctionDerivative,{variables:{x:tree.args[0], \"f'\": tok.name+\"'\"}});\n var dx = differentiate(tree.args[0],x);\n return jme.substituteTree(chainRule,{variables: {\"f'\": df, \"x'\": dx}});\n }\n}\n // end of differentiation code\n // ***************************\n \n $('body').on('question-html-attached',function() {\n var gap = question.parts[0].gaps[0];\n var omark = gap.mark;\n var add_constant_rule = new Numbas.jme.display.Rule('x+y',[]);\n gap.mark = function() {\n var integral = gap.studentAnswer;\n var tree;\n var derivative;\n var derivative_tree;\n try {\n tree = Numbas.jme.compile(integral);\n derivative_tree = differentiate(tree,'x');\n derivative = Numbas.jme.display.treeToJME(derivative_tree);\n derivative = Numbas.jme.display.simplifyExpression(derivative,'all',Numbas.jme.builtinScope);\n }\n catch(e) {\n derivative = '';\n }\n // set the \"student's answer\" to the derivative\n this.studentAnswer = derivative;\n \n // mark the JME part\n omark.apply(this);\n \n // set the student's answer back to what they typed\n this.studentAnswer = integral;\n \n this.markingFeedback = [];\n \n if(this.credit==1) { // derivative matches\n this.markingComment('Your answer is correct. Well done!');\n \n // check there's a constant of integration\n if(Numbas.jme.findvars(tree).length!=2) {\n this.multCredit(0.5,'You need to add a constant of integration, but otherwise this is correct.');\n }\n }\n else {\n var derivativeTeX = Numbas.jme.display.exprToLaTeX(derivative,[],Numbas.jme.builtinScope);\n this.markingComment('The derivative of your answer should be equal to the expression you were asked to integrate, i.e.: \\\$\\\\simplify{cos({a}x) + e^(x/{b})} \\\$ The derivative of your function is \\\$'+derivativeTeX+'\\\$');\n }\n }\n });", "css": ""}, "question_groups": [{"questions": [], "name": "", "pickQuestions": 0, "pickingStrategy": "all-ordered"}], "advice": "", "variables": {"a": {"definition": "random(1..10)", "templateType": "anything", "group": "Ungrouped variables", "name": "a", "description": ""}, "b": {"definition": "random(-10..10 except 0)", "templateType": "anything", "group": "Ungrouped variables", "name": "b", "description": ""}}, "showQuestionGroupNames": false, "functions": {}, "rulesets": {}, "tags": ["demo"], "variable_groups": []}, {"name": "Use data uploaded by the student", "extensions": ["stats"], "custom_part_types": [], "resources": [["question-resources/Data.csv", "/srv/numbas/media/question-resources/Data.csv"]], "navigation": {"showfrontpage": false, "allowregen": true, "preventleave": false}, "contributors": [{"profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/7/", "name": "Christian Lawson-Perfect"}], "variablesTest": {"condition": "", "maxRuns": 100}, "advice": "", "statement": " This question will only work in browsers that support the HTML5 File API! For Internet Explorer users, that means version 10 onwards. \n How does the length of a spring change when you suspend different masses from it? Make measurements of your spring's length when hanging various different weights from it. \n Download the data spreadsheet and open it in a program such as Microsoft Excel. Enter your data, save the file, and then upload it using the button below. ", "metadata": {"licence": "Creative Commons Attribution 4.0 International", "description": " Get the student to upload their experimental data in a CSV file, then ask them to compute statistics on it. "}, "type": "question", "parts": [{"prompt": " \n \n \n Your data \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Weight (N)Length (cm) \n \n \n$n$: \n$\\sum x$: \n$\\sum y$: \n$\\sum x^2$: \n$\\sum y^2$: \n$\\sum xy$: \n$\\alpha$: \n$\\beta$: \n \n \n ", "scripts": {}, "variableReplacementStrategy": "originalfirst", "showCorrectAnswer": true, "marks": 0, "variableReplacements": [], "type": "information", "showFeedbackIcon": true}, {"prompt": " Compute the following statistics from your data. \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n$\\sum x$$\\sum y$$\\sum x^2$$\\sum y^2$$\\sum xy$[[0]][[1]][[2]][[3]][[4]] ", "scripts": {}, "variableReplacementStrategy": "originalfirst", "gaps": [{"scripts": {"mark": {"order": "before", "script": "// get the computed stats\nvar stats = this.question.stats();\n// set the correct answer to the computed stat\nthis.settings.minvalue = stats.sx;\nthis.settings.maxvalue = stats.sx;"}}, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain", "type": "numberentry", "correctAnswerFraction": false, "allowFractions": false, "minValue": "0", "marks": 1, "mustBeReducedPC": 0, "mustBeReduced": false, "showFeedbackIcon": true, "maxValue": "0", "showCorrectAnswer": true}, {"scripts": {"mark": {"order": "before", "script": "var stats = this.question.stats();\nthis.settings.minvalue = stats.sy;\nthis.settings.maxvalue = stats.sy;"}}, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain", "type": "numberentry", "correctAnswerFraction": false, "allowFractions": false, "minValue": "0", "marks": 1, "mustBeReducedPC": 0, "mustBeReduced": false, "showFeedbackIcon": true, "maxValue": "0", "showCorrectAnswer": true}, {"scripts": {"mark": {"order": "before", "script": "var stats = this.question.stats();\nthis.settings.minvalue = stats.sxx;\nthis.settings.maxvalue = stats.sxx;"}}, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain", "type": "numberentry", "correctAnswerFraction": false, "allowFractions": false, "minValue": "0", "marks": 1, "mustBeReducedPC": 0, "mustBeReduced": false, "showFeedbackIcon": true, "maxValue": "0", "showCorrectAnswer": true}, {"scripts": {"mark": {"order": "before", "script": "var stats = this.question.stats();\nthis.settings.minvalue = stats.syy;\nthis.settings.maxvalue = stats.syy;"}}, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain", "type": "numberentry", "correctAnswerFraction": false, "allowFractions": false, "minValue": "0", "marks": 1, "mustBeReducedPC": 0, "mustBeReduced": false, "showFeedbackIcon": true, "maxValue": "0", "showCorrectAnswer": true}, {"scripts": {"mark": {"order": "before", "script": "var stats = this.question.stats();\nthis.settings.minvalue = stats.sxy;\nthis.settings.maxvalue = stats.sxy;"}}, "variableReplacementStrategy": "originalfirst", "variableReplacements": [], "notationStyles": ["plain", "en", "si-en"], "correctAnswerStyle": "plain", "type": "numberentry", "correctAnswerFraction": false, "allowFractions": false, "minValue": "0", "marks": 1, "mustBeReducedPC": 0, "mustBeReduced": false, "showFeedbackIcon": true, "maxValue": "0", "showCorrectAnswer": true}], "showCorrectAnswer": true, "marks": 0, "variableReplacements": [], "type": "gapfill", "showFeedbackIcon": true}], "preamble": {"js": "// read a csv file\nfunction readCSV(text) {\n var lines = text.split('\\n');\n return lines.map(function(line){return line.split(',')});\n}\n\n// wait until the question has been generated\n$('body').on('question-html-attached',function(e) {\n var display = question.display;\n\n // set up an observable for the data array\n var _data = display.data = ko.observableArray([]);\n \n // has the student uploaded data?\n display.gotData = ko.computed(function() {\n return _data().length>0;\n });\n \n // an observable object containing various computed statistics about the data - updates automatically when the data changes\n var stats = question.stats = ko.computed(function() {\n var data = _data();\n \n // weights are in the first column\n var weights = data.map(function(r){return r[0]});\n // lengths in the second column\n var lengths = data.map(function(r){return r[1]});\n \n // how many samples?\n var n = data.length;\n \n // components of the linear regression calculation\n var sx = jStat.sum(weights);\n var sy = jStat.sum(lengths);\n var sxx = jStat.sum(weights.map(function(x){return x*x}));\n var syy = jStat.sum(lengths.map(function(x){return x*x}));\n var sxy = jStat.sum(data.map(function(r){ return r[0]*r[1]}));\n \n // coefficients of the linear regression model\n var beta = (sxy - (sx*sy)/n)/(sxx-(sx*sx)/n);\n var alpha = (sy-beta*sx)/n;\n \n var stats = {\n sx: sx,\n sy: sy,\n sxx: sxx,\n syy: syy,\n sxy: sxy,\n alpha: alpha,\n beta: beta,\n n: data.length\n };\n \n return stats;\n });\n \n // format a number to 3 d.p.\n function niceNumber(n) {\n return Numbas.math.niceNumber(n,{precisionType: 'dp', precision: 3});\n }\n \n // code to read the file when it's uploaded\n $('#file').on('change',function(e) {\n var f = e.target.files[0];\n var reader = new FileReader();\n reader.onload = function(e) {\n var data = readCSV(e.target.result);\n _data(data.map(function(row){ return row.map(parseFloat)}).filter(function(row){return !isNaN(row[0])}));\n }\n reader.readAsText(f);\n });\n});", "css": "#data-table {\n max-height: 30em;\n overflow-y: auto;\n display: inline-block;\n}\na, a:hover {\n color: blue;\n}\na:hover {\n text-decoration: underline;\n}"}, "rulesets": {}, "ungrouped_variables": [], "functions": {}, "variables": {}, "tags": ["csv", "demo", "experiment", "statistics"], "variable_groups": []}, {"name": "Christian's copy of Paired t-test after treatment.", "extensions": ["stats"], "custom_part_types": [], "resources": [], "navigation": {"showfrontpage": false, "allowregen": true, "preventleave": false}, "contributors": [{"profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/7/", "name": "Christian Lawson-Perfect"}], "advice": "\n The table of differences is given by: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {object}ABCDEFGHIJKLMNO Before$\\var{r1[0]}$$\\var{r1[1]}$$\\var{r1[2]}$$\\var{r1[3]}$$\\var{r1[4]}$$\\var{r1[5]}$$\\var{r1[6]}$$\\var{r1[7]}$$\\var{r1[8]}$$\\var{r1[9]}$$\\var{r1[10]}$$\\var{r1[11]}$$\\var{r1[12]}$$\\var{r1[13]}$$\\var{r1[14]}$After$\\var{r2[0]}$$\\var{r2[1]}$$\\var{r2[2]}$$\\var{r2[3]}$$\\var{r2[4]}$$\\var{r2[5]}$$\\var{r2[6]}$$\\var{r2[7]}$$\\var{r2[8]}$$\\var{r2[9]}$$\\var{r2[10]}$$\\var{r2[11]}$$\\var{r2[12]}$$\\var{r2[13]}$$\\var{r2[14]}$Differences$\\var{d[0]}$$\\var{d[1]}$$\\var{d[2]}$$\\var{d[3]}$$\\var{d[4]}$$\\var{d[5]}$$\\var{d[6]}$$\\var{d[7]}$$\\var{d[8]}$$\\var{d[9]}$$\\var{d[10]}$$\\var{d[11]}$$\\var{d[12]}$$\\var{d[13]}$$\\var{d[14]}$\n The mean of the differences is$\\overline{x_d}=\\var{meandiff}$. \n The variance$V$of the differences is \$\\begin{eqnarray*} V&=&\\frac{1}{14}\\left(\\simplify[]{{d[0]^2}+{d[1]^2}+{d[2]^2}+{d[3]^2}+{d[4]^2}+{d[5]^2}+{d[6]^2}+{d[7]^2}+{d[8]^2}+{d[9]^2}+{d[10]^2}+{d[11]^2}+{d[12]^2}+{d[13]^2}+{d[14]^2}}-15\\times \\var{meandiff}^2\\right)\\\\ &=&\\var{variance(d)} \\end{eqnarray*} \$ Hence we have the standard deviation$s_d= \\sqrt{V}=\\var{stdiff}$to 3 decimal places. \n The paired t-statistic is given by: \n \$t_d=\\frac{\\overline{x_d}-\\mu_d}{\\frac{s_d}{\\sqrt{n}}}\$ \n In this example$n=15$and the null hypothesis is that the means are the same i.e.$\\mu_d=0$. \n On calculating we find$t_d=\\var{tvalue}$. \n Looking up this value on the T-distribution table for$t_{14}$\n \$\\begin{array}{r|rrrrr}&0.20&0.10&0.05&0.01&0.001\\\\\\hline14&1.345&1.761&2.145&2.977&4.140\\end{array}\$ \n We see that the t-statistic {msg[t]} and the table tells us that the$p$value {pmsg[t]}. \n Hence we conclude that {cmsg[t]} \n \n ", "statement": "\n Suppose that 15 individuals, diagnosed with bipolar disorder take part in an experiment that grades their happiness on a scale from 1 to 25. They take the test before treatment and then again after a specific drug has been prescribed. The data is shown below: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {object}ABCDEFGHIJKLMNO Before$\\var{r1[0]}$$\\var{r1[1]}$$\\var{r1[2]}$$\\var{r1[3]}$$\\var{r1[4]}$$\\var{r1[5]}$$\\var{r1[6]}$$\\var{r1[7]}$$\\var{r1[8]}$$\\var{r1[9]}$$\\var{r1[10]}$$\\var{r1[11]}$$\\var{r1[12]}$$\\var{r1[13]}$$\\var{r1[14]}$After$\\var{r2[0]}$$\\var{r2[1]}$$\\var{r2[2]}$$\\var{r2[3]}$$\\var{r2[4]}$$\\var{r2[5]}$$\\var{r2[6]}$$\\var{r2[7]}$$\\var{r2[8]}$$\\var{r2[9]}$$\\var{r2[10]}$$\\var{r2[11]}$$\\var{r2[12]}$$\\var{r2[13]}$$\\var{r2[14]}$\n QUESTION: Is there a difference between the average responses of the two groups? In order to do this answer the following questions: \n ", "metadata": {"licence": "Creative Commons Attribution 4.0 International", "description": " Paired t-test to see if there is a difference between responses after treatment. ", "notes": " 11/07/2012: \n Added tags. \n Calculation not yet tested. \n 23/07/2012: \n Added description. \n Checked calculation. \n Changed display slightly in Advice. \n 3/08/2012: \n Added tags. \n Question appears to be working correctly. \n 26/01/2013: \n Advice needs to be finished. "}, "parts": [{"prompt": "\n Find the mean and standard deviations of the difference between the before and after responses \n Calculate differences for after response– before response. \n Mean of difference = [[0]] (input to 3 decimal places ) \n Standard deviation of difference = [[1]] (input to 3 decimal places) \n Now find the paired t-test statistic using the values you have just calculated =[[2]] (3 decimal places) \n \n ", "type": "gapfill", "gaps": [{"maxvalue": "{meandiff}", "marks": 0.5, "type": "numberentry", "showPrecisionHint": false, "minvalue": "{meandiff}"}, {"maxvalue": "{stdiff}", "marks": 0.5, "type": "numberentry", "showPrecisionHint": false, "minvalue": "{stdiff}"}, {"maxvalue": "{tvalue}", "marks": 1.0, "type": "numberentry", "showPrecisionHint": false, "minvalue": "{tvalue}"}], "marks": 0.0}, {"prompt": " Give the value of the t-statistic you have found, choose the range for the$p$value by looking up the t-statistic tables: ", "marks": 0.0, "displaytype": "radiogroup", "displaycolumns": 0.0, "maxmarks": 0.0, "type": "1_n_2", "distractors": ["", "", "", "", ""], "minanswers": 0.0, "matrix": "v", "minmarks": 0.0, "shufflechoices": false, "choices": ["$p$is greater than$10\\%$", "$p$lies between$5 \\%$and$10\\%$", "$p$lies between$1 \\%$and$5\\%$", "$p$lies between$0.1 \\%$and$1\\%$", "$p$is less than$0.1 \\%$"], "maxanswers": 0.0}, {"prompt": " Given the$p$-value and the range you have found, what is the strength of evidence against the null hypothesis that there is a difference in the average responses of the two groups? ", "marks": 0.0, "displaytype": "radiogroup", "displaycolumns": 0.0, "maxmarks": 0.0, "type": "1_n_2", "distractors": ["", "", "", "", ""], "minanswers": 0.0, "matrix": "v", "minmarks": 0.0, "shufflechoices": false, "choices": ["None", "Slight", "Moderate", "Strong", "Very strong"], "maxanswers": 0.0}], "type": "question", "rulesets": {"std": ["all", "fractionNumbers", "!collectNumbers", "!noLeadingMinus"]}, "question_groups": [{"questions": [], "name": "", "pickQuestions": 0, "pickingStrategy": "all-ordered"}], "variables": {"pvalue": {"definition": "precround(ttest(0,d,2),3)", "name": "pvalue"}, "sig2": {"definition": "random(2..3#0.2)", "name": "sig2"}, "object": {"definition": "'Individual'", "name": "object"}, "v": {"definition": "if(tvalue>=t999,[1,0,0,0,0],if(tvalue>=t99,[0,1,0,0,0],if(tvalue>=t95,[0,0,1,0,0],if(tvalue>=t90,[0,0,0,1,0],[0,0,0,0,1]))))", "name": "v"}, "t90": {"definition": 1.761, "name": "t90"}, "r1": {"definition": "repeat(min(round(normalsample(mu1,sig1)),25),15)", "name": "r1"}, "d": {"definition": "list(vector(r2)-vector(r1))", "name": "d"}, "thismany": {"definition": 15.0, "name": "thismany"}, "r2": {"definition": "repeat(min(round(normalsample(mu2,sig2)),25),15)", "name": "r2"}, "t": {"definition": "switch(v[0]=1,0,v[1]=1,1,v[2]=1,2,v[3]=1,3,4)", "name": "t"}, "attempt": {"definition": "'hand'", "name": "attempt"}, "tvalue": {"definition": "precround(abs(tscore(0,d)),3)", "name": "tvalue"}, "mu2": {"definition": "mu1+random(2..4#0.1)", "name": "mu2"}, "t999": {"definition": 4.14, "name": "t999"}, "stdiff": {"definition": "precround(pstdev(d),3)", "name": "stdiff"}, "t99": {"definition": 2.977, "name": "t99"}, "sig1": {"definition": "random(2..3#0.2)", "name": "sig1"}, "msg": {"definition": "['is greater than$\\\\var{t999}$','lies between$\\\\var{t99}$and$\\\\var{t999}$','lies between$\\\\var{t95}$and$\\\\var{t99}$','lies between$\\\\var{t90}$and$\\\\var{t95}$','is less than$\\\\var{t90}$']", "name": "msg"}, "objects": {"definition": "'individuals'", "name": "objects"}, "mu1": {"definition": "random(10..14#0.5)", "name": "mu1"}, "cmsg": {"definition": "['A','B','C','D','E']", "name": "cmsg"}, "t95": {"definition": 2.145, "name": "t95"}, "meandiff": {"definition": "precround(mean(d),3)", "name": "meandiff"}, "pmsg": {"definition": "[' is less than$0.001$',' lies between$0.001$and$0.01$',' lies between$0.01$and$0.05$',' lies between$0.05$and$0.10$',' is greater than$0.10\$']", "name": "pmsg"}}, "progress": "in-progress", "showQuestionGroupNames": false, "functions": {"pstdev": {"definition": "sqrt(abs(l)/(abs(l)-1))*stdev(l)", "parameters": [["l", "list"]], "type": "number", "language": "jme"}}, "variable_groups": [], "tags": ["average", "data analysis", "differences", "elementary statistics", "hypothesis testing", "mean", "mean of differences", "paired t-test", "standard deviation", "standard deviation of differences", "statistics", "stats", "t-test", "variance"]}], "name": "", "pickQuestions": 0, "pickingStrategy": "all-ordered"}], "allQuestions": true, "resources": [["question-resources/Data.csv", "/srv/numbas/media/question-resources/Data.csv"]], "type": "exam", "pickQuestions": 0, "shuffleQuestions": false, "timing": {"allowPause": true, "timedwarning": {"message": "", "action": "none"}, "timeout": {"message": "", "action": "none"}}, "showQuestionGroupNames": false, "feedback": {"allowrevealanswer": true, "showtotalmark": true, "showanswerstate": true, "showactualmark": true, "advicethreshold": 0}, "navigation": {"preventleave": true, "browse": true, "onleave": {"message": "", "action": "none"}, "reverse": true, "allowregen": true, "showfrontpage": true, "showresultspage": "never"}, "duration": 0, "questions": [], "percentPass": 0, "name": "Exam using custom logo theme"}