Diff for /loncom/interface/statistics/lonproblemanalysis.pm between versions 1.116 and 1.119

version 1.116, 2005/02/28 23:07:32 version 1.119, 2005/03/15 00:51:43
Line 132  sub BuildProblemAnalysisPage { Line 132  sub BuildProblemAnalysisPage {
             my $resource = $current_problem->{'resource'};              my $resource = $current_problem->{'resource'};
             $r->print('<h1>'.$resource->compTitle.'</h1>');              $r->print('<h1>'.$resource->compTitle.'</h1>');
             $r->print('<h3>'.$resource->src.'</h3>');              $r->print('<h3>'.$resource->src.'</h3>');
               $r->print('<h4>'.&Apache::lonstatistics::section_and_enrollment_description().'</h4>');
             if ($ENV{'form.show_prob'} eq 'true') {              if ($ENV{'form.show_prob'} eq 'true') {
                 $r->print(&Apache::lonstathelpers::render_resource($resource));                  $r->print(&Apache::lonstathelpers::render_resource($resource));
             }              }
Line 186  sub numerical_response_analysis { Line 187  sub numerical_response_analysis {
                                       $problem->{'respid'});                                        $problem->{'respid'});
     # Gather student data      # Gather student data
     my $response_data = &Apache::loncoursedata::get_response_data      my $response_data = &Apache::loncoursedata::get_response_data
         (\@Apache::lonstatistics::SelectedSections,          ([&Apache::lonstatistics::get_selected_sections()],
          $Apache::lonstatistics::enrollment_status,           $Apache::lonstatistics::enrollment_status,
          $resource->symb,$respid);           $resource->symb,$respid);
     #      #
Line 481  sub numerical_classify_responses { Line 482  sub numerical_classify_responses {
         if ($stats{'max_abs'} < $abs_high) {          if ($stats{'max_abs'} < $abs_high) {
             $stats{'max_abs'} = $abs_high;              $stats{'max_abs'} = $abs_high;
         }          }
         my $low_percent  = 100 * abs($abs_low  / $subm{'correct'});          my $low_percent;
         my $high_percent = 100 * abs($abs_high / $subm{'correct'});          my $high_percent;
           if (defined($subm{'correct'}) && $subm{'correct'} != 0) {
               $low_percent  = 100 * abs($abs_low  / $subm{'correct'});
               $high_percent = 100 * abs($abs_high / $subm{'correct'});
           }
         if (! defined($stats{'min_percent'}) ||          if (! defined($stats{'min_percent'}) ||
             $stats{'min_percent'} > $low_percent) {              $stats{'min_percent'} > $low_percent) {
             $stats{'min_percent'} = $low_percent;              $stats{'min_percent'} = $low_percent;
Line 530  sub numerical_classify_responses { Line 535  sub numerical_classify_responses {
             }              }
         }          }
     }      }
       $stats{'correct_count'} |= 0;
       $stats{'incorrect_count'} |= 0;
     $stats{'students'}=scalar(keys(%students));      $stats{'students'}=scalar(keys(%students));
     return (\%submission_data,\%stats);      return (\%submission_data,\%stats);
 }  }
Line 765  sub radio_response_analysis { Line 772  sub radio_response_analysis {
     $analysis_html .= $table;      $analysis_html .= $table;
     # Gather student data      # Gather student data
     my $response_data = &Apache::loncoursedata::get_response_data      my $response_data = &Apache::loncoursedata::get_response_data
         (\@Apache::lonstatistics::SelectedSections,          ([&Apache::lonstatistics::get_selected_sections()],
          $Apache::lonstatistics::enrollment_status,           $Apache::lonstatistics::enrollment_status,
          $resource->symb,$respid);           $resource->symb,$respid);
     my $correct;   # either a hash reference or a scalar      my $correct;   # either a hash reference or a scalar
Line 881  sub radio_response_analysis { Line 888  sub radio_response_analysis {
             $choice_plot  ne '' ||              $choice_plot  ne '' ||
             $stacked_plot ne '') {              $stacked_plot ne '') {
             my $correct = $foil_choice_data->{'_correct'};              my $correct = $foil_choice_data->{'_correct'};
             if (! defined($correct) || $correct eq '') {              $correct |= 0;
                 $correct = 0;              my $incorrect = $foil_choice_data->{'_count'}-$correct;
             }  
             my $incorrect =   
             $analysis_html.= '<tr><td colspan="4" align="center">'.              $analysis_html.= '<tr><td colspan="4" align="center">'.
                 '<font size="+1">'.                  '<font size="+1">'.
                 &mt($pre_graph_text,                  &mt($pre_graph_text,
                     $plot_num,$foil_choice_data->{'_count'},                      $plot_num,$foil_choice_data->{'_count'},
                     $correct,                      $correct,
                     $foil_choice_data->{'_count'}-$correct,                      $incorrect,
                     $foil_choice_data->{'_students'},                      $foil_choice_data->{'_students'},
                     @extra_data).                      @extra_data).
                     '</td></tr>'.$/;                      '</td></tr>'.$/;
Line 1170  sub OptionResponseAnalysis { Line 1175  sub OptionResponseAnalysis {
     my ($r,$problem,$problem_data,$Students) = @_;      my ($r,$problem,$problem_data,$Students) = @_;
     my ($resource,$respid) = ($problem->{'resource'},      my ($resource,$respid) = ($problem->{'resource'},
                               $problem->{'respid'});                                $problem->{'respid'});
     &Apache::lonnet::logthis('option response analysis on '.$resource->symb);  
     # Note: part data is not needed.      # Note: part data is not needed.
     my $PerformanceData = &Apache::loncoursedata::get_response_data      my $PerformanceData = &Apache::loncoursedata::get_response_data
         (\@Apache::lonstatistics::SelectedSections,          ([&Apache::lonstatistics::get_selected_sections()],
          $Apache::lonstatistics::enrollment_status,           $Apache::lonstatistics::enrollment_status,
          $resource->symb,$respid);           $resource->symb,$respid);
     if (! defined($PerformanceData) ||       if (! defined($PerformanceData) || 
Line 1216  sub OR_tries_analysis { Line 1220  sub OR_tries_analysis {
     if (! defined($Concepts)) {      if (! defined($Concepts)) {
         $Concepts = [];          $Concepts = [];
     }      }
     &Apache::lonnet::logthis('got '.scalar(@$PerformanceData).' data points');  
     my %response_data = &OR_analyze_by_tries($r,$PerformanceData,      my %response_data = &OR_analyze_by_tries($r,$PerformanceData,
                                                      $mintries,$maxtries);                                                       $mintries,$maxtries);
     my $analysis = '';      my $analysis = '';
Line 1273  sub OR_tries_analysis { Line 1276  sub OR_tries_analysis {
     if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }      if (defined($Concepts)) { $num_concepts = scalar(@$Concepts); }
     #      #
     for (my $try=$mintries;$try<=$maxtries;$try++) {      for (my $try=$mintries;$try<=$maxtries;$try++) {
         &Apache::lonnet::logthis('try = '.$try);  
         if (! defined($response_data{'_total'}->[$try]) ||          if (! defined($response_data{'_total'}->[$try]) ||
             $response_data{'_total'}->[$try] == 0) {               $response_data{'_total'}->[$try] == 0) { 
             if ($try > 1) {              if ($try > 1) {
Line 1307  sub OR_tries_analysis { Line 1309  sub OR_tries_analysis {
                 ('Correct Concepts','Concept Number','Percent Correct',                  ('Correct Concepts','Concept Number','Percent Correct',
                  100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});                   100,$plotcolors,undef,\@concept_plot_data,{xskip=>1});
         }          }
         &Apache::lonnet::logthis('got here a_0');  
         #          #
         # Create Foil Plots          # Create Foil Plots
         my $data_count = $response_data{'_total'}->[$try];          my $data_count = $response_data{'_total'}->[$try];
         my $correct = $response_data{'_correct'}->[$try];          my $correct = $response_data{'_correct'}->[$try];
           $correct |= 0;
         my @Datasets;          my @Datasets;
         foreach my $option ('_correct',@{$ORdata->{'_Options'}}) {          foreach my $option ('_correct',@{$ORdata->{'_Options'}}) {
             &Apache::lonnet::logthis('checking option '.$option);  
             next if (! exists($foil_plot[$try]->{$option}));              next if (! exists($foil_plot[$try]->{$option}));
             push(@Datasets,$foil_plot[$try]->{$option});              push(@Datasets,$foil_plot[$try]->{$option});
         }          }
         &Apache::lonnet::logthis('got here a');  
         #          #
         # Put a blank in the data set between concepts          # Put a blank in the data set between concepts
         for (my $set =0;$set<=$#Datasets;$set++) {          for (my $set =0;$set<=$#Datasets;$set++) {
Line 1335  sub OR_tries_analysis { Line 1335  sub OR_tries_analysis {
         }          }
         #          #
         # Set up the labels needed for the bar graph          # Set up the labels needed for the bar graph
         &Apache::lonnet::logthis('got here b');  
         my @Labels;          my @Labels;
         my $idx = 1;          my $idx = 1;
         foreach my $concept (@{$Concepts}) {          foreach my $concept (@{$Concepts}) {
Line 1351  sub OR_tries_analysis { Line 1350  sub OR_tries_analysis {
                   
         #          #
         #          #
         &Apache::lonnet::logthis('got here c');  
         next if (! defined($Datasets[0]));          next if (! defined($Datasets[0]));
         &Apache::lonnet::logthis('got here d');  
         for (my $i=0; $i< scalar(@{$Datasets[0]});$i++) {          for (my $i=0; $i< scalar(@{$Datasets[0]});$i++) {
             $Datasets[0]->[$i]=0;              $Datasets[0]->[$i]=0;
         }          }
Line 1362  sub OR_tries_analysis { Line 1359  sub OR_tries_analysis {
         my $incorrect_graph = &Apache::loncommon::DrawBarGraph          my $incorrect_graph = &Apache::loncommon::DrawBarGraph
             ('Incorrect Statements','Statement','% Chosen Incorrectly',              ('Incorrect Statements','Statement','% Chosen Incorrectly',
              100,$plotcolors,\@Labels,@Datasets,{xskip=>1});               100,$plotcolors,\@Labels,@Datasets,{xskip=>1});
         &Apache::lonnet::logthis('incorrect graph = '.$incorrect_graph);  
         $analysis_html.=           $analysis_html.= 
             '<tr><td colspan="4" align="center">'.              '<tr><td colspan="4" align="center">'.
             '<font size="+1">'.              '<font size="+1">'.
Line 1480  sub OR_time_analysis { Line 1476  sub OR_time_analysis {
         ##          ##
         my ($processed_time_data,$correct,$data_count,$student_count) =          my ($processed_time_data,$correct,$data_count,$student_count) =
             &OR_time_process_data($performance_data,$begin_index,$end_index);              &OR_time_process_data($performance_data,$begin_index,$end_index);
           $correct |= 0;
         ##          ##
         $table .= '<tr><td colspan="4" align="center"><font size="+1">'.          $table .= '<tr><td colspan="4" align="center"><font size="+1">'.
             &mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect',              &mt('[_1] submissions from [_2] students, [_3] correct, [_4] incorrect',

Removed from v.1.116  
changed lines
  Added in v.1.119


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