[gnumeric] Fix Wilcoxon Mann Whitney Test in the presence of empty cells.



commit 8b9c6b13ab6eee1e8307582703c134dd489b46d8
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date:   Sun Jun 3 01:08:32 2012 -0600

    Fix Wilcoxon Mann Whitney Test in the presence of empty cells.
    
    2012-06-03  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* analysis-wilcoxon-mann-whitney.c
    	(analysis_tool_wilcoxon_mann_whitney_engine_run): fix formula in the
    	presence of empty cells

 NEWS                                       |    1 +
 src/tools/ChangeLog                        |    6 ++
 src/tools/analysis-wilcoxon-mann-whitney.c |   69 ++++++++-------------------
 3 files changed, 28 insertions(+), 48 deletions(-)
---
diff --git a/NEWS b/NEWS
index 0b365e3..4a3371e 100644
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,7 @@ Andreas:
 	* Fix object placement in ODF import. [#676339]
 	* Fix space handling on ODF import. [Part of #676535]
 	* Fix TIME and add ODF.TIME. [#676596]
+	* Fix Wilcoxon Mann Whitney Test in the presence of empty cells.
 
 Jean:
 	* Fix graph series headers when a multiple selection is used. [#675913]
diff --git a/src/tools/ChangeLog b/src/tools/ChangeLog
index 5defc44..978ab27 100644
--- a/src/tools/ChangeLog
+++ b/src/tools/ChangeLog
@@ -1,3 +1,9 @@
+2012-06-03  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* analysis-wilcoxon-mann-whitney.c
+	(analysis_tool_wilcoxon_mann_whitney_engine_run): fix formula in the
+	presence of empty cells
+
 2012-04-21  Morten Welinder <terra gnome org>
 
 	* Release 1.11.3
diff --git a/src/tools/analysis-wilcoxon-mann-whitney.c b/src/tools/analysis-wilcoxon-mann-whitney.c
index 942c53f..0690c70 100644
--- a/src/tools/analysis-wilcoxon-mann-whitney.c
+++ b/src/tools/analysis-wilcoxon-mann-whitney.c
@@ -52,8 +52,6 @@ analysis_tool_wilcoxon_mann_whitney_engine_run (data_analysis_output_t *dao,
 	GnmExpr const *expr_total;
 	GnmExpr const *expr_pop_1;
 	GnmExpr const *expr_pop_2;
-	GnmExpr const *expr_pop_1_adj;
-	GnmExpr const *expr_pop_2_adj;
 	GnmExpr const *expr_u;
 	GnmExpr const *expr_count_total;
 
@@ -120,61 +118,36 @@ analysis_tool_wilcoxon_mann_whitney_engine_run (data_analysis_output_t *dao,
 
 	g_slist_free (input);
 
-	expr_pop_1_adj = gnm_expr_new_funcall3
-		(fd_if,
-		 gnm_expr_new_funcall1
-		 (fd_isblank,
-		  gnm_expr_copy (expr_pop_1)),
-		 gnm_expr_new_funcall1
-		 (fd_min,
-		  gnm_expr_copy (expr_total)),
-		 gnm_expr_copy (expr_pop_1));
-	expr_pop_2_adj = gnm_expr_new_funcall3
-		(fd_if,
-		 gnm_expr_new_funcall1
-		 (fd_isblank,
-		  gnm_expr_copy (expr_pop_2)),
-		 gnm_expr_new_funcall1
-		 (fd_min,
-		  gnm_expr_copy (expr_total)),
-		 gnm_expr_copy (expr_pop_2));
+	/* =sum(if(isblank(region1),0,rank.avg(region1,combined_regions,1))) */
 
 	dao_set_cell_array_expr (dao, 1, 2,
-				 gnm_expr_new_binary
-				 (gnm_expr_new_funcall1
-				  (fd_sum,
+				 gnm_expr_new_funcall1
+				 (fd_sum,
+				  gnm_expr_new_funcall3
+				  (fd_if,
+				   gnm_expr_new_funcall1
+				  (fd_isblank,
+				   gnm_expr_copy (expr_pop_1)),
+				   gnm_expr_new_constant (value_new_int (0)),
 				   gnm_expr_new_funcall3
 				   (fd_rank_avg,
-				    expr_pop_1_adj,
+				    gnm_expr_copy (expr_pop_1),
 				    gnm_expr_copy (expr_total),
-				    gnm_expr_new_constant (value_new_int (1)))),
-				  GNM_EXPR_OP_ADD,
-				  gnm_expr_new_binary
-				  (gnm_expr_new_funcall1
-				   (fd_count,
-				    gnm_expr_copy (expr_pop_1)),
-				   GNM_EXPR_OP_SUB,
-				   gnm_expr_new_funcall1
-				   (fd_rows,
-				    gnm_expr_copy (expr_pop_1)))));
+				    gnm_expr_new_constant (value_new_int (1))))));
 	dao_set_cell_array_expr (dao, 2, 2,
-				 gnm_expr_new_binary
-				 (gnm_expr_new_funcall1
-				  (fd_sum,
+				 gnm_expr_new_funcall1
+				 (fd_sum,
+				  gnm_expr_new_funcall3
+				  (fd_if,
+				   gnm_expr_new_funcall1
+				  (fd_isblank,
+				   gnm_expr_copy (expr_pop_2)),
+				   gnm_expr_new_constant (value_new_int (0)),
 				   gnm_expr_new_funcall3
 				   (fd_rank_avg,
-				    expr_pop_2_adj,
+				    gnm_expr_copy (expr_pop_2),
 				    gnm_expr_copy (expr_total),
-				    gnm_expr_new_constant (value_new_int (1)))),
-				  GNM_EXPR_OP_ADD,
-				  gnm_expr_new_binary
-				  (gnm_expr_new_funcall1
-				   (fd_count,
-				    gnm_expr_copy (expr_pop_2)),
-				   GNM_EXPR_OP_SUB,
-				   gnm_expr_new_funcall1
-				   (fd_rows,
-				    gnm_expr_copy (expr_pop_2)))));
+				    gnm_expr_new_constant (value_new_int (1))))));
 
 	expr_count_total = gnm_expr_new_funcall1
 		(fd_count, gnm_expr_copy (expr_total));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]