aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--samples/linear.dat8
-rw-r--r--statistics/chisq.hpp22
2 files changed, 22 insertions, 8 deletions
diff --git a/samples/linear.dat b/samples/linear.dat
index 03849b6..22e5db8 100644
--- a/samples/linear.dat
+++ b/samples/linear.dat
@@ -1,4 +1,4 @@
-0 0 0 4 1 1
-1 0 0 7 1 1
-2 0 0 10 1 1
-3 0 0 13 1 1
+0 1 .5 4 0 0
+1 .1 1 8 0 0
+1.5 1 .1 10 0 0
+3 .3 1 13 0 0
diff --git a/statistics/chisq.hpp b/statistics/chisq.hpp
index ed25051..4054c22 100644
--- a/statistics/chisq.hpp
+++ b/statistics/chisq.hpp
@@ -107,7 +107,7 @@ namespace opt_utilities
#ifdef HAVE_X_ERROR
Tx x1=this->datas().get_data(i).get_x()-this->datas().get_data(i).get_x_lower_err();
Tx x2=this->datas().get_data(i).get_x()+this->datas().get_data(i).get_x_upper_err();
- Tx x=this->datas().get_data(i).get_x()+this->datas().get_data(i).get_x();
+ Tx x=this->datas().get_data(i).get_x();
Ty errx1=(eval_model(x1,p)-eval_model(x,p));
Ty errx2=(eval_model(x2,p)-eval_model(x,p));
//Ty errx=0;
@@ -121,13 +121,27 @@ namespace opt_utilities
Ty y_err;
Ty errx=0;
- if(errx2>errx1)
+ if(errx1<errx2)
{
- errx=errx1>0?errx1:-errx1;
+ if(y_obs<y_model)
+ {
+ errx=errx1>0?errx1:-errx1;
+ }
+ else
+ {
+ errx=errx2>0?errx2:-errx2;
+ }
}
else
{
- errx=errx2>0?errx2:-errx2;
+ if(y_obs<y_model)
+ {
+ errx=errx2>0?errx2:-errx2;
+ }
+ else
+ {
+ errx=errx1>0?errx1:-errx1;
+ }
}