Diff for /loncom/interface/statistics/lonproblemstatistics.pm between versions 1.79 and 1.81

version 1.79, 2004/04/01 20:02:56 version 1.81, 2004/04/01 21:35:52
Line 101  my @Fields = ( Line 101  my @Fields = (
              align => 'right',               align => 'right',
              color => '#FFFFE6',               color => '#FFFFE6',
              selectable => 'no',               selectable => 'no',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'container',             { name   => 'container',
              title  => 'Sequence or Folder',               title  => 'Sequence or Folder',
Line 109  my @Fields = ( Line 109  my @Fields = (
              color  => '#FFFFE6',               color  => '#FFFFE6',
              sortable => 'yes',               sortable => 'yes',
              selectable => 'no',               selectable => 'no',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'title',             { name   => 'title',
              title  => 'Title',               title  => 'Title',
Line 118  my @Fields = ( Line 118  my @Fields = (
              special  => 'link',               special  => 'link',
              sortable => 'yes',                sortable => 'yes', 
              selectable => 'no',               selectable => 'no',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'part',              { name   => 'part', 
              title  => 'Part',               title  => 'Part',
              align  => 'left',               align  => 'left',
              color  => '#FFFFE6',               color  => '#FFFFE6',
              selectable => 'no',               selectable => 'no',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'num_students',             { name   => 'num_students',
              title  => '#Stdnts',               title  => '#Stdnts',
Line 136  my @Fields = ( Line 136  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Number of Students Attempting Problem',               long_title => 'Number of Students Attempting Problem',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'tries',             { name   => 'tries',
              title  => 'Tries',               title  => 'Tries',
Line 147  my @Fields = ( Line 147  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Total Number of Tries',               long_title => 'Total Number of Tries',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'max_tries',             { name   => 'max_tries',
              title  => 'Max Tries',               title  => 'Max Tries',
Line 158  my @Fields = ( Line 158  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Maximum Number of Tries',               long_title => 'Maximum Number of Tries',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'min_tries',             { name   => 'min_tries',
              title  => 'Min Tries',               title  => 'Min Tries',
Line 169  my @Fields = ( Line 169  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Minumum Number of Tries',               long_title => 'Minumum Number of Tries',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'mean_tries',             { name   => 'mean_tries',
              title  => 'Mean Tries',               title  => 'Mean Tries',
Line 180  my @Fields = ( Line 180  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Average Number of Tries',               long_title => 'Average Number of Tries',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'std_tries',             { name   => 'std_tries',
              title  => 'S.D. tries',               title  => 'S.D. tries',
Line 191  my @Fields = ( Line 191  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Standard Deviation of Number of Tries',               long_title => 'Standard Deviation of Number of Tries',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'skew_tries',             { name   => 'skew_tries',
              title  => 'Skew Tries',               title  => 'Skew Tries',
Line 202  my @Fields = ( Line 202  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Skew of Number of Tries',               long_title => 'Skew of Number of Tries',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'num_solved',             { name   => 'num_solved',
              title  => '#YES',               title  => '#YES',
Line 213  my @Fields = ( Line 213  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Number of Students able to Solve',               long_title => 'Number of Students able to Solve',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'num_override',             { name   => 'num_override',
              title  => '#yes',               title  => '#yes',
Line 224  my @Fields = ( Line 224  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Number of Students given Override',               long_title => 'Number of Students given Override',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'num_wrong',             { name   => 'num_wrong',
              title  => '#Wrng',               title  => '#Wrng',
Line 235  my @Fields = ( Line 235  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Percent of students whose final answer is wrong',               long_title => 'Percent of students whose final answer is wrong',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'deg_of_diff',             { name   => 'deg_of_diff',
              title  => 'DoDiff',               title  => 'DoDiff',
Line 247  my @Fields = ( Line 247  my @Fields = (
              long_title => 'Degree of Difficulty'.               long_title => 'Degree of Difficulty'.
                            '[ 1 - ((#YES+#yes) / Tries) ]',                             '[ 1 - ((#YES+#yes) / Tries) ]',
              selectable => 'yes',               selectable => 'yes',
              selected => 'yes',               defaultselected => 'yes',
            },             },
            { name   => 'deg_of_disc',             { name   => 'deg_of_disc',
              title  => 'DoDisc',               title  => 'DoDisc',
Line 258  my @Fields = ( Line 258  my @Fields = (
              graphable => 'yes',               graphable => 'yes',
              long_title => 'Degree of Discrimination',               long_title => 'Degree of Discrimination',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
 );  );
   
Line 270  my @SeqFields = ( Line 270  my @SeqFields = (
              special  => 'no',               special  => 'no',
              sortable => 'no',                sortable => 'no', 
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'items',             { name   => 'items',
              title  => '#Items',               title  => '#Items',
Line 281  my @SeqFields = ( Line 281  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Number of Items in Sequence',               long_title => 'Number of Items in Sequence',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'scoremean',             { name   => 'scoremean',
              title  => 'Score Mean',               title  => 'Score Mean',
Line 292  my @SeqFields = ( Line 292  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Mean Sequence Score',               long_title => 'Mean Sequence Score',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'scorestd',             { name   => 'scorestd',
              title  => 'Score STD',               title  => 'Score STD',
Line 303  my @SeqFields = ( Line 303  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Standard Deviation of Sequence Scores',               long_title => 'Standard Deviation of Sequence Scores',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'scoremax',             { name   => 'scoremax',
              title  => 'Score Max',               title  => 'Score Max',
Line 314  my @SeqFields = ( Line 314  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Maximum Sequence Score',               long_title => 'Maximum Sequence Score',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'scoremin',             { name   => 'scoremin',
              title  => 'Score Min',               title  => 'Score Min',
Line 325  my @SeqFields = ( Line 325  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Minumum Sequence Score',               long_title => 'Minumum Sequence Score',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'scorecount',             { name   => 'scorecount',
              title  => 'Score N',               title  => 'Score N',
Line 336  my @SeqFields = ( Line 336  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Number of Students in score computations',               long_title => 'Number of Students in score computations',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'countmean',             { name   => 'countmean',
              title  => 'Count Mean',               title  => 'Count Mean',
Line 347  my @SeqFields = ( Line 347  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Mean Sequence Score',               long_title => 'Mean Sequence Score',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'countstd',             { name   => 'countstd',
              title  => 'Count STD',               title  => 'Count STD',
Line 358  my @SeqFields = ( Line 358  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Standard Deviation of Sequence Scores',               long_title => 'Standard Deviation of Sequence Scores',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'countmax',             { name   => 'countmax',
              title  => 'Count Max',               title  => 'Count Max',
Line 369  my @SeqFields = ( Line 369  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Maximum Number of Correct Problems',               long_title => 'Maximum Number of Correct Problems',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'countmin',             { name   => 'countmin',
              title  => 'Count Min',               title  => 'Count Min',
Line 380  my @SeqFields = ( Line 380  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Minumum Number of Correct Problems',               long_title => 'Minumum Number of Correct Problems',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'count',             { name   => 'count',
              title  => 'Count N',               title  => 'Count N',
Line 391  my @SeqFields = ( Line 391  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'Number of Students in score computations',               long_title => 'Number of Students in score computations',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },             },
            { name   => 'KR-21',             { name   => 'KR-21',
              title  => 'KR-21',               title  => 'KR-21',
Line 402  my @SeqFields = ( Line 402  my @SeqFields = (
              graphable => 'no',               graphable => 'no',
              long_title => 'KR-21 reliability statistic',               long_title => 'KR-21 reliability statistic',
              selectable => 'yes',               selectable => 'yes',
              selected => 'no',               defaultselected => 'no',
            },                        },           
 );  );
   
Line 415  sub parse_field_selection { Line 415  sub parse_field_selection {
         $ENV{'form.fieldselections'} = [];          $ENV{'form.fieldselections'} = [];
         foreach my $field (@Fields) {          foreach my $field (@Fields) {
             next if ($field->{'selectable'} ne 'yes');              next if ($field->{'selectable'} ne 'yes');
             if ($field->{'selected'} eq 'yes') {              if ($field->{'defaultselected'} eq 'yes') {
                 push(@{$ENV{'form.fieldselections'}},$field->{'name'});                  push(@{$ENV{'form.fieldselections'}},$field->{'name'});
             }              }
         }          }
     }      }
     #      #
       # Make sure the data we are plotting is there
       my %NeededFields;
       if (exists($ENV{'form.plot'}) && $ENV{'form.plot'} ne '' &&
           $ENV{'form.plot'} ne 'none') {
           if ($ENV{'form.plot'} eq 'degrees') {
               $NeededFields{'deg_of_diff'}++;
               $NeededFields{'deg_of_disc'}++;
           } elsif ($ENV{'form.plot'} eq 'tries statistics') {
               $NeededFields{'mean_tries'}++;
               $NeededFields{'std_tries'}++;
               $NeededFields{'problem_num'}++;
           } else {
               $NeededFields{$ENV{'form.plot'}}++;
           }
       }
       #
     # This should not happen, but in case it does...      # This should not happen, but in case it does...
     if (ref($ENV{'form.fieldselections'}) ne 'ARRAY') {      if (ref($ENV{'form.fieldselections'}) ne 'ARRAY') {
         $ENV{'form.fieldselections'} = [$ENV{'form.fieldselections'}];          $ENV{'form.fieldselections'} = [$ENV{'form.fieldselections'}];
Line 429  sub parse_field_selection { Line 445  sub parse_field_selection {
     # Set the field data and the selected fields (for easier checking)      # Set the field data and the selected fields (for easier checking)
     undef(%SelectedFields);      undef(%SelectedFields);
     foreach my $field (@Fields) {      foreach my $field (@Fields) {
         next if ($field->{'selectable'} ne 'yes');          if ($field->{'selectable'} ne 'yes') {
         $field->{'selected'} = 'no';              $field->{'selected'} = 'yes';
           } else {
               $field->{'selected'} = 'no';
           }
           if (exists($NeededFields{$field->{'name'}})) {
               $field->{'selected'} = 'yes';
               $SelectedFields{$field->{'name'}}++;
           }
         foreach my $selection (@{$ENV{'form.fieldselections'}}) {          foreach my $selection (@{$ENV{'form.fieldselections'}}) {
             if ($selection eq $field->{'name'} || $selection eq 'all') {              if ($selection eq $field->{'name'} || $selection eq 'all') {
                 $field->{'selected'} = 'yes';                  $field->{'selected'} = 'yes';
Line 470  select sections, maps, and output. Line 493  select sections, maps, and output.
 ###############################################  ###############################################
 ###############################################  ###############################################
 sub CreateInterface {  sub CreateInterface {
       #
     &parse_field_selection();      &parse_field_selection();
       #
     my $Str = '';      my $Str = '';
     $Str .= &Apache::lonhtmlcommon::breadcrumbs      $Str .= &Apache::lonhtmlcommon::breadcrumbs
         (undef,'Overall Problem Statistics','Statistics_Overall_Key');          (undef,'Overall Problem Statistics','Statistics_Overall_Key');
Line 945  sub degrees_plot { Line 970  sub degrees_plot {
     my $diffdata .= '<data>'.join(',',@Labels).'</data>'.$/.      my $diffdata .= '<data>'.join(',',@Labels).'</data>'.$/.
                     '<data>'.join(',',@Diff).'</data>'.$/;                      '<data>'.join(',',@Diff).'</data>'.$/;
     #      #
       my $title = 'Degree of Discrimination\nand Degree of Difficulty';
       if ($xmax > 50) {
           $title = 'Degree of Discrimination and Degree of Difficulty';
       }
       #
     $plot=<<"END";      $plot=<<"END";
 <gnuplot   <gnuplot 
     texfont="10"      texfont="10"
Line 955  sub degrees_plot { Line 985  sub degrees_plot {
     align="center"      align="center"
     border="on"      border="on"
     transparent="on"      transparent="on"
     alttag="Sample Plot"      alttag="Degree of Discrimination and Degree of Difficulty Plot"
     samples="100"      samples="100"
     bgcolor="xffffff"      bgcolor="xffffff"
     height="$height"      height="$height"
Line 964  sub degrees_plot { Line 994  sub degrees_plot {
         pos="top right"          pos="top right"
         title=""          title=""
         box="off" />          box="off" />
     <title>Degree of Discrmination and Degree of Difficulty</title>      <title>$title</title>
     <axis xmin="0" ymin="$ymin" xmax="$xmax" ymax="$ymax" color="x000000" />      <axis xmin="0" ymin="$ymin" xmax="$xmax" ymax="$ymax" color="x000000" />
     <xlabel>Problem Number</xlabel>      <xlabel>Problem Number</xlabel>
     <curve       <curve 
Line 1028  sub tries_data_plot { Line 1058  sub tries_data_plot {
                           '<data>'.join(',',@Mean).'</data>'.$/.                            '<data>'.join(',',@Mean).'</data>'.$/.
                           '<data>'.join(',',@STD).'</data>'.$/;                            '<data>'.join(',',@STD).'</data>'.$/;
     #      #
       my $title = 'Mean and S.D. of Tries';
       if ($xmax > 25) {
           $title = 'Mean and Standard Deviation of Tries';
       }
       #
     $plot=<<"END";      $plot=<<"END";
 <gnuplot   <gnuplot 
     texfont="10"      texfont="10"
Line 1038  sub tries_data_plot { Line 1073  sub tries_data_plot {
     align="center"      align="center"
     border="on"      border="on"
     transparent="on"      transparent="on"
     alttag="Sample Plot"      alttag="Mean and S.D of Tries Plot"
     samples="100"      samples="100"
     bgcolor="xffffff"      bgcolor="xffffff"
     height="$height"      height="$height"
     width="$width">      width="$width">
     <title>Mean and S.D. of Tries</title>      <title>$title</title>
     <axis xmin="0" ymin="0" xmax="$xmax" ymax="$ymax" color="x000000" />      <axis xmin="0" ymin="0" xmax="$xmax" ymax="$ymax" color="x000000" />
     <xlabel>Problem Number</xlabel>      <xlabel>Problem Number</xlabel>
       <ylabel>Number of Tries</ylabel>
     <curve       <curve 
         linestyle="yerrorbars"          linestyle="yerrorbars"
         name="S.D. Tries"           name="S.D. Tries" 
Line 1078  sub plot_dropdown { Line 1114  sub plot_dropdown {
     my @Additional_Plots = (      my @Additional_Plots = (
                             { graphable=>'yes',                              { graphable=>'yes',
                               name => 'degrees',                                name => 'degrees',
                               title => 'DoDisc and DoDiff' },                                title => 'Difficulty Indexes' },
                             { graphable=>'yes',                              { graphable=>'yes',
                               name => 'tries statistics',                                name => 'tries statistics',
                               title => 'Mean and S.D. of Tries' });                                title => 'Tries Statistics' });
     #      #
     my $Str= "\n".'<select name="plot" size="1">';      my $Str= "\n".'<select name="plot" size="1">';
     $Str .= '<option name="none"></option>'."\n";      $Str .= '<option name="none"></option>'."\n";
     $Str .= '<option name="none2">none</option>'."\n";      $Str .= '<option name="none2">none</option>'."\n";
     foreach my $field (@Fields,@Additional_Plots) {      foreach my $field (@Additional_Plots,@Fields) {
         if (! exists($field->{'graphable'}) ||          if (! exists($field->{'graphable'}) ||
             $field->{'graphable'} ne 'yes') {              $field->{'graphable'} ne 'yes') {
             next;              next;

Removed from v.1.79  
changed lines
  Added in v.1.81


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>