Diff for /loncom/interface/statistics/lonproblemstatistics.pm between versions 1.5 and 1.6

version 1.5, 2002/07/29 21:23:22 version 1.6, 2002/07/29 22:01:11
Line 31 Line 31
 # 11/1,11/4,11/16,12/14,12/16,12/18,12/20,12/31 Behrouz Minaei  # 11/1,11/4,11/16,12/14,12/16,12/18,12/20,12/31 Behrouz Minaei
 # YEAR=2002  # YEAR=2002
 # 1/22,2/1,2/6,2/25,3/2,3/6,3/17,3/21,3/22,3/26,4/7,5/6 Behrouz Minaei  # 1/22,2/1,2/6,2/25,3/2,3/6,3/17,3/21,3/22,3/26,4/7,5/6 Behrouz Minaei
 # 5/12,5/14,5/15,5/19,5/26,7/16,7/25  Behrouz Minaei  # 5/12,5/14,5/15,5/19,5/26,7/16,7/25,7/29  Behrouz Minaei
 #  #
 ###  ###
   
Line 80  sub BuildProblemStatisticsPage { Line 80  sub BuildProblemStatisticsPage {
     unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {      unless(tie(%cache,'GDBM_File',$cacheDB,&GDBM_READER,0640)) {
         return '<html><body>Unable to tie database.</body></html>';          return '<html><body>Unable to tie database.</body></html>';
     }      }
     my $discriminantFactor;      my %discriminant=();
     my @list=();      my @list=();
     my %Discuss=&Apache::loncoursedata::LoadDiscussion($courseID);      my %Discuss=&Apache::loncoursedata::LoadDiscussion($courseID);
     my $index=0;      my $index=0;
     foreach (@$students) {      foreach (@$students) {
  $index++;   $index++;
  #&Apache::lonstatistics::Update_PrgWin(++$index,$r);   #&Apache::lonstatistics::Update_PrgWin(++$index,$r);
         $discriminantFactor = &ExtractStudentData(\%cache, $_, \@list,          &ExtractStudentData(\%cache, $_, \@list,\%Discuss, $r, \%discriminant);
   \%Discuss, $r);  
     }      }
     #&Apache::lonstatistics::Close_PrgWin($r);      #&Apache::lonstatistics::Close_PrgWin($r);
     
     my ($upper, $lower) = &Discriminant($discriminantFactor);      my ($upper, $lower) = &Discriminant(\%discriminant);
     my %Header = (0,"Homework Sets Order",1,"#Stdnts",2,"Tries",3,"Mod",      my %Header = (0,"Homework Sets Order",1,"#Stdnts",2,"Tries",3,"Mod",
                   4,"Mean",5,"#YES",6,"#yes",7,"%Wrng",8,"DoDiff",                    4,"Mean",5,"#YES",6,"#yes",7,"%Wrng",8,"DoDiff",
                   9,"S.D.",10,"Skew.",11,"D.F.1st",12,"D.F.2nd", 13, "Disc.");                    9,"S.D.",10,"Skew.",11,"D.F.1st",12,"D.F.2nd", 13, "Disc.");
     my $color=&setbgcolor(0);      my $color=&setbgcolor(0);
     my %GraphDat= &BuildStatisticsTable(\%cache, $discriminantFactor, \@list,       my %GraphDat= &BuildStatisticsTable(\%cache, \%discriminant, \@list, 
                                         \%Header, $students, $r, $color);                                          \%Header, $students, $r, $color);
     untie(%cache);      untie(%cache);
 }  }
Line 146  sub CloseTable { Line 145  sub CloseTable {
     
 # ------ Dump the Student's DB file and handling the data for statistics table   # ------ Dump the Student's DB file and handling the data for statistics table 
 sub ExtractStudentData {  sub ExtractStudentData {
     my ($cache,$name,$list,$Discuss,$r)=@_;      my ($cache,$name,$list,$Discuss,$r,$discriminant)=@_;
     my %discriminantFactor;  
   
     my $totalTries = 0;      my $totalTries = 0;
     my $totalAwarded = 0;      my $totalAwarded = 0;
     my $spent=0;      my $spent=0;
Line 296  sub ExtractStudentData { Line 293  sub ExtractStudentData {
                     $Discussed=1;                      $Discussed=1;
                 }                  }
                 my $time = $cache->{"$name:$LatestVersion:$problem:timestamp"};                  my $time = $cache->{"$name:$LatestVersion:$problem:timestamp"};
                 $Dis .= $tempProblemOrder.'='.$DisF.'+'.$Yes;                  $Dis .= $tempSequenceOrder.'@'.$pOrder.'='.$DisF.'+'.$Yes;
                 $ptr .= '&'.$partData{$_.':tries'}.                  $ptr .= '&'.$partData{$_.':tries'}.
                         '&'.$partData{$_.':wrong'}.                          '&'.$partData{$_.':wrong'}.
                         '&'.$partData{$_.':code'};                          '&'.$partData{$_.':code'};
Line 336  sub ExtractStudentData { Line 333  sub ExtractStudentData {
     $pstr=$DisFactor.':'.$name.':'.$ProbTot.':'.$TotalOpend.':'.      $pstr=$DisFactor.':'.$name.':'.$ProbTot.':'.$TotalOpend.':'.
                   $totalTries.':'.$ProbSolved.':'.$TotFirst.':'.                    $totalTries.':'.$ProbSolved.':'.$TotFirst.':'.
                   $TS_yes.':'.$TS.':'.$TotDiscuss;                    $TS_yes.':'.$TS.':'.$TotDiscuss;
     $discriminantFactor{$pstr}=$Dis;      (%$discriminant)->{$pstr}=$Dis;
  }   }
     }      }
   
     return (\%discriminantFactor);  
 }  }
   
   
Line 364  sub BuildStatisticsTable { Line 359  sub BuildStatisticsTable {
     my $NoElements = scalar @$list;      my $NoElements = scalar @$list;
     my @List=sort(@$list);      my @List=sort(@$list);
   
 #    for (my $c=0;$c<$NoElements;$c++) {  
 ## $r->print('<br>'.$c.')'.$List[$c]);  
 # $r->print("<br>$List[$c]");  
 #    }  
   
 #6666666  #6666666
 #    my $file="/home/httpd/perl/tmp/183d.txt";  #    my $file="/home/httpd/perl/tmp/183d.txt";
 #    open(OUT, ">$file");  #    open(OUT, ">$file");
Line 427  sub BuildStatisticsTable { Line 417  sub BuildStatisticsTable {
  ($tar,$Tries,$Wrongs,$Code,$Disc)=split(/\&/,   ($tar,$Tries,$Wrongs,$Code,$Disc)=split(/\&/,
                                                      $List[$cIdx]);                                                       $List[$cIdx]);
         ($SqOrd,$PrOrd,$Prob)=split(/\:/,$tar);          ($SqOrd,$PrOrd,$Prob)=split(/\:/,$tar);
   
 #$r->print("<br>$cIdx ... $SqOrd, $PrOrd, $Tries, $Wrongs, $Code, $Disc");  
 #$r->rflush();  
   
     }      }
   
 #$r->print("<br>$cIdx ... $SqOrd  , $Temp , $TotalTries");  
 #$r->rflush();  
   
     $p_count++;      $p_count++;
     my $Dummy;      my $Dummy;
     ($ResId,$Dummy)=split(/\*/,$Temp);      ($ResId,$Dummy)=split(/\*/,$Temp);
Line 736  sub ProblemStatisticsLegend { Line 719  sub ProblemStatisticsLegend {
     my $Ptr = '';      my $Ptr = '';
     $Ptr = '<table border="0">';      $Ptr = '<table border="0">';
     $Ptr .= '<tr><td>';      $Ptr .= '<tr><td>';
     $Ptr .= '<b>#Stdnts</b>:</td>';      $Ptr .= '<b>#Stdnts</b></td>';
     $Ptr .= '<td>Total Number of Students opened the problem.';      $Ptr .= '<td>Total Number of Students opened the problem.';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>Tries</b>:</td>';      $Ptr .= '<b>Tries</b></td>';
     $Ptr .= '<td>Total Number of Tries for solving the problem.';      $Ptr .= '<td>Total Number of Tries for solving the problem.';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>Mod</b>:</td>';      $Ptr .= '<b>Mod</b></td>';
     $Ptr .= '<td>Maximunm Number of Tries for solving the problem.';      $Ptr .= '<td>Maximunm Number of Tries for solving the problem.';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>Mean</b>:</td>';      $Ptr .= '<b>Mean</b></td>';
     $Ptr .= '<td>Average Number of the tries. [ Tries / #Stdnts ]';      $Ptr .= '<td>Average Number of the tries. [ Tries / #Stdnts ]';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>#YES</b>:</td>';      $Ptr .= '<b>#YES</b></td>';
     $Ptr .= '<td>Number of students solved the problem correctly.';      $Ptr .= '<td>Number of students solved the problem correctly.';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>#yes</b>:</td>';      $Ptr .= '<b>#yes</b></td>';
     $Ptr .= '<td>Number of students solved the problem by override.';      $Ptr .= '<td>Number of students solved the problem by override.';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>%Wrng</b>:</td>';      $Ptr .= '<b>%Wrng</b></td>';
     $Ptr .= '<td>Percentage of students tried to solve the problem ';      $Ptr .= '<td>Percentage of students tried to solve the problem ';
     $Ptr .= 'but still incorrect. [ 100*((#Stdnts-(#YES+#yes))/#Stdnts) ]';      $Ptr .= 'but still incorrect. [ 100*((#Stdnts-(#YES+#yes))/#Stdnts) ]';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>DoDiff</b>:</td>';      $Ptr .= '<b>DoDiff</b></td>';
     $Ptr .= '<td>Degree of Difficulty of the problem.  ';      $Ptr .= '<td>Degree of Difficulty of the problem.  ';
     $Ptr .= '[ 1 - ((#YES+#yes) / Tries) ]';      $Ptr .= '[ 1 - ((#YES+#yes) / Tries) ]';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>S.D.</b>:</td>';      $Ptr .= '<b>S.D.</b></td>';
     $Ptr .= '<td>Standard Deviation of the tries.  ';      $Ptr .= '<td>Standard Deviation of the tries.  ';
     $Ptr .= '[ sqrt(sum((Xi - Mean)^2)) / (#Stdnts-1) ';      $Ptr .= '[ sqrt(sum((Xi - Mean)^2)) / (#Stdnts-1) ';
     $Ptr .= 'where Xi denotes every student\'s tries ]';      $Ptr .= 'where Xi denotes every student\'s tries ]';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>Skew.</b>:</td>';      $Ptr .= '<b>Skew.</b></td>';
     $Ptr .= '<td>Skewness of the students tries.';      $Ptr .= '<td>Skewness of the students tries.';
     $Ptr .= '[(sqrt( sum((Xi - Mean)^3) / #Stdnts)) / (S.D.^3)]';      $Ptr .= '[(sqrt( sum((Xi - Mean)^3) / #Stdnts)) / (S.D.^3)]';
     $Ptr .= '</td></tr><tr><td>';      $Ptr .= '</td></tr><tr><td>';
     $Ptr .= '<b>Dis.F.</b>:</td>';      $Ptr .= '<b>Dis.F.</b></td>';
     $Ptr .= '<td>Discrimination Factor: A Standard for evaluating the ';      $Ptr .= '<td>Discrimination Factor: A Standard for evaluating the ';
     $Ptr .= 'problem according to a Criterion<br>';      $Ptr .= 'problem according to a Criterion<br>';
     $Ptr .= '<b>[Applied Criterion in %27 Upper Students - ';      $Ptr .= '<b>[Applied Criterion in %27 Upper Students - ';

Removed from v.1.5  
changed lines
  Added in v.1.6


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