## WeBWorK Problems

### Re: horizontal line prevents PDF output

by Hedley Pinsent -
Number of replies: 0
Yes $HR . . . and I did see this before?? Can't wait until somebody writes a book. Anyway I also wanted a real backslash \ but used a dash instead. It was to identify the headings and columns of a table. Actually it all has to do with a chi-squared test of a contingency table (statistics) Here is the example if anybody is interested. ## DESCRIPTION ## Statistics ## ENDDESCRIPTION ## KEYWORDS('Statistics','Distribution') ## Tagged by ## DBsubject('Statistics') ## DBchapter('Chi-squared') ## DBsection('Contingency Table') ## Date('April 2012') ## Author('Hedley Pinsent') ## Institution('CNA') ## TitleText1('') ## EditionText1('') ## AuthorText1('') ## Section1('') ## Problem1('') # # First comes some stuff that appears at the beginning of every problem # DOCUMENT(); # This should be the first executable line in the problem. loadMacros( "PGbasicmacros.pl", "PGchoicemacros.pl", "PGanswermacros.pl", "unionMacros.pl", "unionTables.pl", "PGstatisticsmacros.pl", ); TEXT($BEGIN_ONE_COLUMN,beginproblem()) ;

# vvvvvvvvvvvvvvvvv Defining Categories
while ($nRows +$nColumns < 5){
$nRows = list_random(2,3,4);$nColumns = list_random(2,3,4)}
@colourList = ("Red","Green","Yellow","Blue","Orange", "Purple");
@colaList = ("Inca","Pepsi","Coca-Cola","Mountain Dew","Lime","Frosty");

@colaList = @colaList[NchooseK(6,$nRows)]; @colourList = @colourList[NchooseK(6,$nColumns)];
# ^^^^^^^^^^^^^^^^^ Defining Categories

## Constructing Differences vvvvvvvvvvvvvvvvvvvvvv
foreach $irow (0..$nRows -1){
foreach $icol (0..$nColumns -1){
$D[$irow*$nColumns +$icol] = 0;# Differences = zeros
}
}
#adjust below to get balance between reject and do not reject
$tries = random(1,5,1); foreach$i (0..$tries){$diff = list_random(1,2,3,4,5, -5,-4,-3,-2,-1);

@colPair = NchooseK($nColumns, 2); @rowPair = NchooseK($nRows, 2);
$D[$rowPair[0]*$nColumns +$colPair[0]] += $diff;$D[$rowPair[0]*$nColumns + $colPair[1]] -=$diff;
$D[$rowPair[1]*$nColumns +$colPair[1]] += $diff;$D[$rowPair[1]*$nColumns + $colPair[0]] -=$diff;
}
## Constructing Differences ^^^^^^^^^^^^^^^^^^^^^^

# Assigning Values (Expected/Observed) vvvvvvvvvvvvvvvvvvvvvvv
$base = random (1,3,1); foreach$irow (0..$nRows -1){$rowFact[$irow]= list_random(4,5,6,7,8,9)} foreach$icol (0..$nColumns -1){$colFact[$icol]= list_random(4,5,6,7,8,9)} foreach$irow (0..$nRows -1){ foreach$icol (0..$nColumns -1){$E[$irow*$nColumns + $icol] =$base*$rowFact[$irow]*$colFact[$icol];# Expected

$O[$irow*$nColumns +$icol] = $E[$irow*$nColumns +$icol]+$D[$irow*$nColumns +$icol];# Observed
}
}
# Assigning Values (Expected/Observed)^^^^^^^^^^^^^^^^^^^^^^
##Calculating chi-squared vvvvvvvvvvvvvvvvvvvvvvvvv
$CALC = 0; foreach$k (0.. $nRows *$nColumns -1){$CALC =$CALC + ($D[$k]**2) / $E[$k]}
##Calculating chi-squared ^^^^^^^^^^^^^^^^^^^^^^^^

##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv
$datatable = BeginTable(spacing => 3);$datatable .= AlignedRow(["Cola-Colour",@colourList]);
foreach $i (0..$nRows-1) {
foreach $j (0..$nColumns -1) {

@row [$j] =$O[$i *$nColumns + $j]; }$datatable .= AlignedRow([$colaList[$i],@row])
}
$datatable .= EndTable(); ##Constructing the data table ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BEGIN_TEXT Follows is a contingency table for colour preference and cola preference.$BR
For example $O[0 *$nColumns + 0] people in the survey preferred the colour $colourList[0] and their favourite beverage was$colaList[0] $PAR$datatable

END_TEXT

##Constructing the answer table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv

$answertable = BeginTable(spacing => 3);$answertable .= AlignedRow(["Cola-Colour",@colourList, "Totals"]);
foreach $i (0..$nRows-1) {
$rowTotal = 0; foreach$j (0.. $nColumns -1) {$name = $i . "and".$j;

@answerRule[$j] = NAMED_ANS_RULE($name,6);
push @namedCmp , $name=>num_cmp($E[$i *$nColumns + $j] ) ;$rowTotal = $rowTotal +$E[$i *$nColumns + $j] ;$colTotal[$j] =$colTotal[$j]+$E[$i *$nColumns + $j]; }$name = "rowTotal". $i; @answerRule[$nColumns] = NAMED_ANS_RULE($name,6); push @namedCmp ,$name=>num_cmp( $rowTotal ) ;$answertable .= AlignedRow([$colaList[$i],@answerRule]);

}
# Last row
foreach $k (0..$nColumns-1 ){
$name = "colTotal".$k;
@answerRule[$k] = NAMED_ANS_RULE($name,6);
push @namedCmp , $name=>num_cmp($colTotal[$k] ) ; }$grandTotal = 0;
foreach $k (0..$nColumns - 1){$grandTotal +=$colTotal[$k]}$name = "grand";
$answerRule[$nColumns] = NAMED_ANS_RULE($name,6); push @namedCmp ,$name=>num_cmp( $grandTotal ) ;$answertable .= AlignedRow(["Totals",@answerRule]);
$answertable .= EndTable(); ##Constructing the answer table ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ BEGIN_TEXT For the above table calculate the row totals, column totals grand total, and the expected values.$BR Enter these values in the appropriate spaces below.$PAR$answertable

END_TEXT

## Setting up significance test vvvvvvvvvvvvvvvvvvvvvvvvvvv
$alpha = list_random(0.01,0.05);$df = ($nColumns -1)*($nRows - 1);
$CRIT = chisqrdistr ($df,$alpha); ##Setting up significance test ^^^^^^^^^^^^^^^^^^^^^^^^^^^$mcnull = new_multiple_choice();
$mcnull->qa( "", "There is no relationship" );$mcnull->extra(
"There is a relationship"
);

$mcalt = new_multiple_choice();$mcalt->qa(
"",
"There is a relationship"
);
$mcalt->extra( "There is no relationship" ); ##SETTING UP THE TABLE @r1 = ("$$H_0$$",$mcnull->print_a()) ;
@r2 = ("$$H_1$$",$mcalt->print_a());$mcTestStatistic = new_multiple_choice();
$mcTestStatistic->qa( "The test statistic is", "$$\chi^2$$" );$mcTestStatistic->extra(
"$$z$$",
"$$t$$","$$F$$",
);

# Test Statistics choices

$mctestEQ = new_multiple_choice();$mctestEQ->qa(
"", "$$\gt$$"
);
$mctestEQ->extra("$$\lt or \gt$$". " -/+", "$$\lt$$" ); @r3 = ("We reject if: ",$mcTestStatistic->print_a() ,$mctestEQ->print_a(),NAMED_ANS_RULE("CRIT",6));$mcAR = new_multiple_choice();

## this is a two-tailed test

if( abs($CALC) >$CRIT ){$mcAR->qa( "We", "reject" );$mcAR->extra(
"do not reject"
);}
else{$mcAR->qa( "We", "do not reject" );$mcAR->extra(
"reject"
);}

BEGIN_TEXT
$HR At a$alpha significance level test whether there is a relationship between favourite colour and farourite cola.
$PAR$PAR

\{begintable(4)\}

\{row( @r1)\}
\{row( @r2)\}

\{endtable()\}

$PAR$PAR
$$\alpha$$ = \{NAMED_ANS_RULE("alpha",6)\} $PERCENT$BR

$BR \{begintable(4)\} \{row( @r3)\} \{endtable()\}$PAR
The value of the test statistic is \{NAMED_ANS_RULE("Ftest",6)\} $PAR \{$mcAR->print_q()\}
\{$mcAR->print_a()\} END_TEXT ##contingency table check vvvvvvvvvvvvvvvvvv NAMED_ANS(@namedCmp); ##contingency table check ^^^^^^^^^^^^^^^^^^ #CHECKING FIRST ROW H0 ANS( radio_cmp($mcnull->correct_ans() ) );

#CHECKING SECOND ROW H1
ANS( radio_cmp( $mcalt->correct_ans() ) ); #checking alpha in percent NAMED_ANS(alpha=>num_cmp( 100 *$alpha, mode=>"arith", reltol=>.01));

#CHECKING THIRD ROW
ANS( radio_cmp( $mcTestStatistic->correct_ans() ) ); ANS( radio_cmp($mctestEQ->correct_ans() ) );
NAMED_ANS(CRIT=>num_cmp( $CRIT, mode=>"arith", reltol=>2)); #CHECKING FORTH ROW NAMED_ANS(Ftest=>num_cmp($CALC, mode=>"arith", reltol=>2));

ANS( radio_cmp( $mcAR->correct_ans() ) ); TEXT($END_ONE_COLUMN);

ENDDOCUMENT(); # This should be the last executable line in the problem.