[LON-CAPA-cvs] cvs: modules /gerd evaluate.pl

www lon-capa-cvs@mail.lon-capa.org
Thu, 06 Jul 2006 17:39:15 -0000


This is a MIME encoded message

--www1152207555
Content-Type: text/plain

www		Thu Jul  6 13:39:15 2006 EDT

  Modified files:              
    /modules/gerd	evaluate.pl 
  Log:
  Three cheers to copy and paste.
  Anyway, calculating MPEX cluster scores now and correlations therewith.
  
  
--www1152207555
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20060706133915.txt"

Index: modules/gerd/evaluate.pl
diff -u modules/gerd/evaluate.pl:1.11 modules/gerd/evaluate.pl:1.12
--- modules/gerd/evaluate.pl:1.11	Thu Jul  6 11:14:12 2006
+++ modules/gerd/evaluate.pl	Thu Jul  6 13:39:15 2006
@@ -76,6 +76,8 @@
 my %mpexpost=();
 my %mpexprescore=();
 my %mpexpostscore=();
+my %mpexscore=();
+my %mpexscoregain=();
 my %gender=();
 my %fcigain=();
 my %mpex=();
@@ -87,21 +89,21 @@
     my $user=$entries[4];
     unless ($user=~/\w/) { next; }
     $gender{$user}=$entries[1];
-    $grade{$user}=$entries[7]/4;
+    $grade{$user}=$entries[7];
+# Pre-Results
     if ($entries[8]=~/\d/) {
-       $fcipre{$user}=$entries[8]/30;
+       $fcipre{$user}=$entries[8];
     }
     foreach my $mp (1..34) {
         if ($entries[38+$mp]=~/\d/) { 
-	    $mpexpre{$user.':'.$mp}=($entries[38+$mp]-1)/4;
-	    $mpexprescore{$mp.'.'.$entries[38+$mp]}++; 
+	    $mpexpre{$user.':'.$mp}=$entries[38+$mp];
 	}
     }
     if ($entries[73]=~/\d/) {
-       $fcipost{$user}=$entries[73]/30;
+       $fcipost{$user}=$entries[73];
     }
     if (($fcipost{$user}) && ($fcipre{$user})) {
-	$fcigain{$user}=($fcipost{$user}-$fcipre{$user})/2+0.5;
+	$fcigain{$user}=$fcipost{$user}-$fcipre{$user};
 	$fci{$user}=($fcipost{$user}+$fcipre{$user})/2;
     } elsif ($fcipost{$user}) {
 	$fci{$user}=$fcipost{$user};
@@ -110,8 +112,7 @@
     }
     foreach my $mp (1..34) {
 	if ($entries[103+$mp]=~/\d/) { 
-	    $mpexpost{$user.':'.$mp}=($entries[103+$mp]-1)/4;
-	    $mpexpostscore{$mp.'.'.$entries[103+$mp]}++; 
+	    $mpexpost{$user.':'.$mp}=$entries[103+$mp];
 	}
     }
     foreach my $mp (1..34) {
@@ -125,125 +126,470 @@
     }
 }
 close(IN);
-#
-# All information read
-# Variables between 0 and 1 for
-# discussion
-# fcipre
-# fcipost
-# mpexpre
-# mpexpost
-# grade
-# fcigain
-# conceptual
-# procedural
-# surface
-# physics
-# math
-# solution
+
+# Define the MPEX Cluster Scores
+
+my @independence=(1,8,13,14,17,27);
+my @coherence=(12,15,16,21,29);
+my @concepts=(4,19,26,27,32);
+my @reality=(10,18,22,25);
+my @math=(2,6,8,16,20);
+my @effort=(3,6,7,24,31);
+
+my @expert=(undef,
+0,0,1,0,1,1,1,
+0,0,0,1,0,0,0,
+0,0,0,1,0,0,0,
+0,0,0,1,1,0,0,
+0,1,1,1,0,1
+	    );
+
 
 # Sample is everybody who got a grade in the course
 my @userkeys=sort keys %grade;
 
-# Get MPEX ave and std-deviations
-my @mpexpresum=();
-my @mpexpren=();
-my @mpexpostsum=();
-my @mpexpostn=();
-my @mpexsum=();
-my @mpexn=();
-my @mpexpreave=();
-my @mpexprestd=();
-my @mpexpostave=();
-my @mpexpoststd=();
-my @mpexave=();
-my @mpexstd=();
-my @mpexpresumq=();
-my @mpexpostsumq=();
-my @mpexsumq=();
+# Calculate MPEX total and cluster scores
+
+foreach my $user (@userkeys) {
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (1..34) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':total'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':total'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':total'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':total'})) && (defined($mpexpostscore{$user.':total'}))) {
+	$mpexscoregain{$user.':total'}=$mpexpostscore{$user.':total'}-$mpexprescore{$user.':total'};
+    }
+}
+
+
+foreach my $user (@userkeys) {
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (@independence) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':independence'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':independence'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':independence'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':independence'})) && (defined($mpexpostscore{$user.':independence'}))) {
+	$mpexscoregain{$user.':independence'}=$mpexpostscore{$user.':independence'}-$mpexprescore{$user.':independence'};
+    }
+}
+
+
+foreach my $user (@userkeys) {
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (@coherence) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':coherence'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':coherence'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':coherence'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':coherence'})) && (defined($mpexpostscore{$user.':coherence'}))) {
+	$mpexscoregain{$user.':coherence'}=$mpexpostscore{$user.':coherence'}-$mpexprescore{$user.':coherence'};
+    }
+}
+
+
+foreach my $user (@userkeys) {
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (@concepts) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':concepts'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':concepts'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':concepts'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':concepts'})) && (defined($mpexpostscore{$user.':concepts'}))) {
+	$mpexscoregain{$user.':concepts'}=$mpexpostscore{$user.':concepts'}-$mpexprescore{$user.':concepts'};
+    }
+}
+
+
+foreach my $user (@userkeys) {
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (@reality) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':reality'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':reality'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':reality'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':reality'})) && (defined($mpexpostscore{$user.':reality'}))) {
+	$mpexscoregain{$user.':reality'}=$mpexpostscore{$user.':reality'}-$mpexprescore{$user.':reality'};
+    }
+}
 
 
 foreach my $user (@userkeys) {
-   foreach my $number (1..34) {
-       if (defined($mpexpre{$user.':'.$number})) {
-	   $mpexpresum[$number]+=$mpexpre{$user.':'.$number};
-	   $mpexpren[$number]++;
-       }
-       if (defined($mpexpost{$user.':'.$number})) {
-	   $mpexpostsum[$number]+=$mpexpost{$user.':'.$number};
-	   $mpexpostn[$number]++;
-       }
-       if (defined($mpex{$user.':'.$number})) {
-	   $mpexsum[$number]+=$mpex{$user.':'.$number};
-	   $mpexn[$number]++;
-       }
-   }    
-}
-
-foreach my $number (1..34) {
-    $mpexpreave[$number]=$mpexpresum[$number]/$mpexpren[$number];
-    $mpexpostave[$number]=$mpexpostsum[$number]/$mpexpostn[$number];
-    $mpexave[$number]=$mpexsum[$number]/$mpexn[$number];
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (@math) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':math'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':math'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':math'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':math'})) && (defined($mpexpostscore{$user.':math'}))) {
+	$mpexscoregain{$user.':math'}=$mpexpostscore{$user.':math'}-$mpexprescore{$user.':math'};
+    }
 }
 
+
 foreach my $user (@userkeys) {
-   foreach my $number (1..34) {
-       if (defined($mpexpre{$user.':'.$number})) {
-	   $mpexpresumq[$number]+=($mpexpre{$user.':'.$number}-$mpexpreave[$number])**2;
-       }
-       if (defined($mpexpost{$user.':'.$number})) {
-	   $mpexpostsumq[$number]+=($mpexpost{$user.':'.$number}-$mpexpostave[$number])**2;
-       }
-       if (defined($mpex{$user.':'.$number})) {
-	   $mpexsumq[$number]+=($mpex{$user.':'.$number}-$mpexave[$number])**2;
-       }
-   }  
-}
-
-foreach my $number (1..34) {
-    $mpexprestd[$number]=int(100*sqrt($mpexpresumq[$number]/$mpexpren[$number])+0.5)/100;
-    $mpexpoststd[$number]=int(100*sqrt($mpexpostsumq[$number]/$mpexpostn[$number])+0.5)/100;
-    $mpexstd[$number]=int(100*sqrt($mpexsumq[$number]/$mpexn[$number])+0.5)/100;
-    $mpexpreave[$number]=int(100*$mpexpreave[$number]+0.5)/100;
-    $mpexpostave[$number]=int(100*$mpexpostave[$number]+0.5)/100;
-    $mpexave[$number]=int(100*$mpexave[$number]+0.5)/100;
-}
-
-print "\nGrade/Solution: ".&hashcorrelate(\%grade,'',\%solution,'',\@userkeys,'',0.01,100);
-print "\nGrade/Math: ".&hashcorrelate(\%grade,'',\%math,'',\@userkeys,'',0.01,100);
-print "\nGrade/Physics: ".&hashcorrelate(\%grade,'',\%physics,'',\@userkeys,'',0.01,100);
-print "\nGrade/Surface: ".&hashcorrelate(\%grade,'',\%surface,'',\@userkeys,'',0.01,100);
-print "\nGrade/Procedural: ".&hashcorrelate(\%grade,'',\%procedural,'',\@userkeys,'',0.01,100);
-print "\nGrade/Conceptual: ".&hashcorrelate(\%grade,'',\%conceptual,'',\@userkeys,'',0.01,100);
-
-print "\nFCIFinal/Solution: ".&hashcorrelate(\%fcipost,'',\%solution,'',\@userkeys,'',0.01,100);
-print "\nFCIFinal/Math: ".&hashcorrelate(\%fcipost,'',\%math,'',\@userkeys,'',0.01,100);
-print "\nFCIFinal/Physics: ".&hashcorrelate(\%fcipost,'',\%physics,'',\@userkeys,'',0.01,100);
-print "\nFCIFinal/Surface: ".&hashcorrelate(\%fcipost,'',\%surface,'',\@userkeys,'',0.01,100);
-print "\nFCIFinal/Procedural: ".&hashcorrelate(\%fcipost,'',\%procedural,'',\@userkeys,'',0.01,100);
-print "\nFCIFinal/Conceptual: ".&hashcorrelate(\%fcipost,'',\%conceptual,'',\@userkeys,'',0.01,100);
-
-print "\nFCIg/Solution: ".&hashcorrelate(\%fcigain,'',\%solution,'',\@userkeys,'',0.01,100);
-print "\nFCIg/Math: ".&hashcorrelate(\%fcigain,'',\%math,'',\@userkeys,'',0.01,100);
-print "\nFCIg/Physics: ".&hashcorrelate(\%fcigain,'',\%physics,'',\@userkeys,'',0.01,100);
-print "\nFCIg/Surface: ".&hashcorrelate(\%fcigain,'',\%surface,'',\@userkeys,'',0.01,100);
-print "\nFCIg/Procedural: ".&hashcorrelate(\%fcigain,'',\%procedural,'',\@userkeys,'',0.01,100);
-print "\nFCIg/Conceptual: ".&hashcorrelate(\%fcigain,'',\%conceptual,'',\@userkeys,'',0.01,100);
+    my $totpre=0;
+    my $totpost=0;
+    my $tot=0;
+    my $scpre=0;
+    my $scpost=0;
+    my $sc=0;
+    foreach my $mp (@effort) {
+	if (defined($mpexpre{$user.':'.$mp})) {
+	    $totpre++;
+	    if (($mpexpre{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpre++;
+	    }
+	    if (($mpexpre{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpre++;
+	    }
+	}
+	if (defined($mpexpost{$user.':'.$mp})) {
+	    $totpost++;
+	    if (($mpexpost{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$scpost++;
+	    }
+	    if (($mpexpost{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$scpost++;
+	    }
+	}
+	if (defined($mpex{$user.':'.$mp})) {
+	    $tot++;
+	    if (($mpex{$user.':'.$mp}>3) && ($expert[$mp]==1)) {
+		$sc++;
+	    }
+	    if (($mpex{$user.':'.$mp}<3) && ($expert[$mp]==0)) {
+		$sc++;
+	    }
+	}
+    }
+    if ($totpre) {
+	$mpexprescore{$user.':effort'}=$scpre/$totpre;
+    }
+    if ($totpost) {
+	$mpexpostscore{$user.':effort'}=$scpost/$totpost;
+    }
+    if ($tot) {
+	$mpexscore{$user.':effort'}=$sc/$tot;
+    }
+    if ((defined($mpexprescore{$user.':effort'})) && (defined($mpexpostscore{$user.':effort'}))) {
+	$mpexscoregain{$user.':effort'}=$mpexpostscore{$user.':effort'}-$mpexprescore{$user.':effort'};
+    }
+}
+
+
+
+print "\nGrade/Solution: ".&hashcorrelate(\%grade,'',\%solution,'',\@userkeys,'',0.1,100);
+print "\nGrade/Math: ".&hashcorrelate(\%grade,'',\%math,'',\@userkeys,'',0.1,100);
+print "\nGrade/Physics: ".&hashcorrelate(\%grade,'',\%physics,'',\@userkeys,'',0.1,100);
+print "\nGrade/Surface: ".&hashcorrelate(\%grade,'',\%surface,'',\@userkeys,'',0.1,100);
+print "\nGrade/Procedural: ".&hashcorrelate(\%grade,'',\%procedural,'',\@userkeys,'',0.1,100);
+print "\nGrade/Conceptual: ".&hashcorrelate(\%grade,'',\%conceptual,'',\@userkeys,'',0.1,100);
+
+print "\nFCIFinal/Solution: ".&hashcorrelate(\%fcipost,'',\%solution,'',\@userkeys,'',0.1,100);
+print "\nFCIFinal/Math: ".&hashcorrelate(\%fcipost,'',\%math,'',\@userkeys,'',0.1,100);
+print "\nFCIFinal/Physics: ".&hashcorrelate(\%fcipost,'',\%physics,'',\@userkeys,'',0.1,100);
+print "\nFCIFinal/Surface: ".&hashcorrelate(\%fcipost,'',\%surface,'',\@userkeys,'',0.1,100);
+print "\nFCIFinal/Procedural: ".&hashcorrelate(\%fcipost,'',\%procedural,'',\@userkeys,'',0.1,100);
+print "\nFCIFinal/Conceptual: ".&hashcorrelate(\%fcipost,'',\%conceptual,'',\@userkeys,'',0.1,100);
+
+print "\nFCIg/Solution: ".&hashcorrelate(\%fcigain,'',\%solution,'',\@userkeys,'',0.1,100);
+print "\nFCIg/Math: ".&hashcorrelate(\%fcigain,'',\%math,'',\@userkeys,'',0.1,100);
+print "\nFCIg/Physics: ".&hashcorrelate(\%fcigain,'',\%physics,'',\@userkeys,'',0.1,100);
+print "\nFCIg/Surface: ".&hashcorrelate(\%fcigain,'',\%surface,'',\@userkeys,'',0.1,100);
+print "\nFCIg/Procedural: ".&hashcorrelate(\%fcigain,'',\%procedural,'',\@userkeys,'',0.1,100);
+print "\nFCIg/Conceptual: ".&hashcorrelate(\%fcigain,'',\%conceptual,'',\@userkeys,'',0.1,100);
+
+foreach my $cat ('total','independence','coherence','concepts','reality','math','effort') {
+    print "\n\n-- CAT: $cat\n";
+
+    print "\n$cat Pre/Solution: ".&hashcorrelate(\%mpexprescore,$cat,\%solution,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/Math: ".&hashcorrelate(\%mpexprescore,$cat,\%math,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/Physics: ".&hashcorrelate(\%mpexprescore,$cat,\%physics,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/Surface: ".&hashcorrelate(\%mpexprescore,$cat,\%surface,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/Procedural: ".&hashcorrelate(\%mpexprescore,$cat,\%procedural,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/Conceptual: ".&hashcorrelate(\%mpexprescore,$cat,\%conceptual,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/Grade: ".&hashcorrelate(\%mpexprescore,$cat,\%grade,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/FCIPre: ".&hashcorrelate(\%mpexprescore,$cat,\%fcipre,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/FCIFinal: ".&hashcorrelate(\%mpexprescore,$cat,\%fcipost,'',\@userkeys,'',0.1,100);
+    print "\n$cat Pre/FCIg: ".&hashcorrelate(\%mpexprescore,$cat,\%fcigain,'',\@userkeys,'',0.1,100);
+
+    print "\n$cat Post/Solution: ".&hashcorrelate(\%mpexpostscore,$cat,\%solution,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/Math: ".&hashcorrelate(\%mpexpostscore,$cat,\%math,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/Physics: ".&hashcorrelate(\%mpexpostscore,$cat,\%physics,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/Surface: ".&hashcorrelate(\%mpexpostscore,$cat,\%surface,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/Procedural: ".&hashcorrelate(\%mpexpostscore,$cat,\%procedural,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/Conceptual: ".&hashcorrelate(\%mpexpostscore,$cat,\%conceptual,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/Grade: ".&hashcorrelate(\%mpexpostscore,$cat,\%grade,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/FCIPre: ".&hashcorrelate(\%mpexpostscore,$cat,\%fcipre,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/FCIFinal: ".&hashcorrelate(\%mpexpostscore,$cat,\%fcipost,'',\@userkeys,'',0.1,100);
+    print "\n$cat Post/FCIg: ".&hashcorrelate(\%mpexpostscore,$cat,\%fcigain,'',\@userkeys,'',0.1,100);
+
+    print "\n$cat/Solution: ".&hashcorrelate(\%mpexscore,$cat,\%solution,'',\@userkeys,'',0.1,100);
+    print "\n$cat/Math: ".&hashcorrelate(\%mpexscore,$cat,\%math,'',\@userkeys,'',0.1,100);
+    print "\n$cat/Physics: ".&hashcorrelate(\%mpexscore,$cat,\%physics,'',\@userkeys,'',0.1,100);
+    print "\n$cat/Surface: ".&hashcorrelate(\%mpexscore,$cat,\%surface,'',\@userkeys,'',0.1,100);
+    print "\n$cat/Procedural: ".&hashcorrelate(\%mpexscore,$cat,\%procedural,'',\@userkeys,'',0.1,100);
+    print "\n$cat/Conceptual: ".&hashcorrelate(\%mpexscore,$cat,\%conceptual,'',\@userkeys,'',0.1,100);
+    print "\n$cat/Grade: ".&hashcorrelate(\%mpexscore,$cat,\%grade,'',\@userkeys,'',0.1,100);
+    print "\n$cat/FCIPre: ".&hashcorrelate(\%mpexscore,$cat,\%fcipre,'',\@userkeys,'',0.1,100);
+    print "\n$cat/FCIFinal: ".&hashcorrelate(\%mpexscore,$cat,\%fcipost,'',\@userkeys,'',0.1,100);
+    print "\n$cat/FCIg: ".&hashcorrelate(\%mpexscore,$cat,\%fcigain,'',\@userkeys,'',0.1,100);
+
+    print "\n$cat Gain/Solution: ".&hashcorrelate(\%mpexscoregain,$cat,\%solution,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/Math: ".&hashcorrelate(\%mpexscoregain,$cat,\%math,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/Physics: ".&hashcorrelate(\%mpexscoregain,$cat,\%physics,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/Surface: ".&hashcorrelate(\%mpexscoregain,$cat,\%surface,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/Procedural: ".&hashcorrelate(\%mpexscoregain,$cat,\%procedural,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/Conceptual: ".&hashcorrelate(\%mpexscoregain,$cat,\%conceptual,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/Grade: ".&hashcorrelate(\%mpexscoregain,$cat,\%grade,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/FCIPre: ".&hashcorrelate(\%mpexscoregain,$cat,\%fcipre,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/FCIFinal: ".&hashcorrelate(\%mpexscoregain,$cat,\%fcipost,'',\@userkeys,'',0.1,100);
+    print "\n$cat Gain/FCIg: ".&hashcorrelate(\%mpexscoregain,$cat,\%fcigain,'',\@userkeys,'',0.1,100);
+}
+
 
 foreach my $number (1..8) {
     foreach my $char ('a'..'d') {
 	print "\n$number$char: ".
-	    &hashcorrelate(\%grade,'',\%discussion,$number.$char,\@userkeys,'Grade',0.01,100).
-	    &hashcorrelate(\%fcipost,'',\%discussion,$number.$char,\@userkeys,'FCIFinal',0.01,100).
-	    &hashcorrelate(\%fcigain,'',\%discussion,$number.$char,\@userkeys,'FCIg',0.01,100);
+	    &hashcorrelate(\%grade,'',\%discussion,$number.$char,\@userkeys,'Grade',0.1,100).
+	    &hashcorrelate(\%fcipost,'',\%discussion,$number.$char,\@userkeys,'FCIFinal',0.1,100).
+	    &hashcorrelate(\%fcigain,'',\%discussion,$number.$char,\@userkeys,'FCIg',0.1,100);
     }
 }
 
-foreach my $mpexidx (1..34,'independence',1,8,13,14,17,27,'coherence',12,15,16,21,29,'concepts',4,19,26,27,32,'reality link',10,18,22,25,'math link',2,6,8,16,20,'effort',3,6,7,24,31) {
+foreach my $mpexidx (1..34) {
    print "\n$mpexidx - ";
-   print ' Pre: '.$mpexpreave[$mpexidx].'+/-'.$mpexprestd[$mpexidx].'('.$mpexpren[$mpexidx].')'.
-         ' Post: '.$mpexpostave[$mpexidx].'+/-'.$mpexpoststd[$mpexidx].'('.$mpexpostn[$mpexidx].')'.
-         ' Both: '.$mpexave[$mpexidx].'+/-'.$mpexstd[$mpexidx].'('.$mpexn[$mpexidx].')';
+
    print &hashcorrelate(\%fci,'',\%mpex,$mpexidx,\@userkeys,'FCI').
          &hashcorrelate(\%fcipre,'',\%mpex,$mpexidx,\@userkeys,'FCIInit').
          &hashcorrelate(\%fcipost,'',\%mpex,$mpexidx,\@userkeys,'FCIFinal').
@@ -281,22 +627,6 @@
 }
 print "\n";
 
-foreach my $mp (1..34) {
-    print 
-  "\nPre $mp: ".$mpexprescore{"$mp.1"}."-".$mpexprescore{"$mp.2"}."-".$mpexprescore{"$mp.3"}."-".$mpexprescore{"$mp.4"}."-".$mpexprescore{"$mp.5"};
-    my $sum=$mpexprescore{"$mp.1"}+$mpexprescore{"$mp.2"}+$mpexprescore{"$mp.3"}+$mpexprescore{"$mp.4"}+$mpexprescore{"$mp.5"};
-    print " ($sum) ";
-    my $disagree=($mpexprescore{"$mp.1"}+$mpexprescore{"$mp.2"})/$sum;
-    my $agree=($mpexprescore{"$mp.4"}+$mpexprescore{"$mp.5"})/$sum;
-    print "D: $disagree A: $agree\n";
-    print "Post $mp: ". $mpexpostscore{"$mp.1"}."-".$mpexpostscore{"$mp.2"}."-".$mpexpostscore{"$mp.3"}."-".$mpexpostscore{"$mp.4"}."-".$mpexpostscore{"$mp.5"};
-    my $sum=$mpexpostscore{"$mp.1"}+$mpexpostscore{"$mp.2"}+$mpexpostscore{"$mp.3"}+$mpexpostscore{"$mp.4"}+$mpexpostscore{"$mp.5"};
-    print " ($sum) ";
-    $disagree=($mpexpostscore{"$mp.1"}+$mpexpostscore{"$mp.2"})/$sum;
-    $agree=($mpexpostscore{"$mp.4"}+$mpexpostscore{"$mp.5"})/$sum;
-    print "D: $disagree A: $agree\n";
-
-}
 
 exit;
 #
@@ -345,7 +675,7 @@
 sub correlation {
     my ($x,$y)=@_;
     my $co= new Statistics::Basic::Correlation($x,$y);
-    return ($co->query,$#$x);;
+    return ($co->query,$#$x+1);
 }
 
 
@@ -372,5 +702,5 @@
     my $pop_sd_x = sqrt( $sum_sq_x / $#$x );
     my $pop_sd_y = sqrt( $sum_sq_y / $#$x );
     my $cov_x_y=$sum_coproduct / $#$x;
-    return ($cov_x_y / ($pop_sd_x * $pop_sd_y),$#$x);
+    return ($cov_x_y / ($pop_sd_x * $pop_sd_y),$#$x+1);
 }

--www1152207555--