Commit bc1fc19b authored by pfreon's avatar pfreon
Browse files

Major change related to jackknife test, to tests of answers consistancy and to warnings .

Addition of jackknife t-test for each parameter on the main panel of CLIMPROD (CadreMain).
Tests of answers consistancy regarding the different ages.
Warning related to time lags, degrees of freedom, statistical results.
parent 711c7ba9
......@@ -2,6 +2,7 @@ package fr.ird.climprod;
// Gère fenêtre principale intitulée "Climprod x"
import static fr.ird.climprod.Data.getNbDataRetenue;
import static fr.ird.climprod.Validation.getParamResult;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
......@@ -571,7 +572,7 @@ public class CadreMain extends JFrame {
if (Global.CadreTimePlots == null) {
Cadre_Plot dlg;
dlg = new Cadre_Plot(Global.timePlot);
dlg.setTitle("Climprod : Time plots");
dlg.setTitle("Climprod: Time plots");
dlg.setVisible(true);
Global.CadreTimePlots = dlg;
} else {
......@@ -584,7 +585,7 @@ public class CadreMain extends JFrame {
if (Global.CadreBiVariatePlots == null) {
Cadre_Plot dlg;
dlg = new Cadre_Plot(Global.scatterPlot);
dlg.setTitle("Climprod : Bivariate plots");
dlg.setTitle("Climprod: Bivariate plots");
dlg.setVisible(true);
Global.CadreBiVariatePlots = dlg;
} else {
......@@ -644,7 +645,7 @@ public class CadreMain extends JFrame {
if (Global.CadreResidualPlots == null) {
Cadre_Plot dlg;
dlg = new Cadre_Plot(Global.residualsPlot);
dlg.setTitle("Climprod : Residuals plots");
dlg.setTitle("Climprod: Residuals plots");
dlg.setVisible(true);
Global.CadreResidualPlots = dlg;
} else {
......@@ -668,7 +669,7 @@ public class CadreMain extends JFrame {
if (Global.CadreThreeVariatePlots == null) {
Cadre_Plot dlg;
dlg = new Cadre_Plot(Global.variatePlot);
dlg.setTitle("Climprod : Three variates plots");
dlg.setTitle("Climprod: Three variates plots");
dlg.setVisible(true);
Global.CadreThreeVariatePlots = dlg;
} else {
......@@ -680,7 +681,7 @@ public class CadreMain extends JFrame {
if (Global.CadreMSPlots == null) {
Cadre_Plot dlg;
dlg = new Cadre_Plot(Global.msyPlot);
dlg.setTitle("Climprod : Msy & MS_E plots");
dlg.setTitle("Climprod: Msy & MS_E plots");
dlg.setVisible(true);
Global.CadreMSPlots = dlg;
} else {
......@@ -782,6 +783,7 @@ public class CadreMain extends JFrame {
String faits = "";
DecimalFormat nf = new DecimalFormat(" 0.00");
DecimalFormat nf2= new DecimalFormat(" 0.000000;-0.000000");
Global.Res_Test_Jackknife_Par = new int[Validation.nbre_par]; // Rajout 2020.
if (Global.nom_fichier != null) {
faits = "Data file path:" + Global.nom_fichier + s + s;
......@@ -838,8 +840,13 @@ public class CadreMain extends JFrame {
}
if (Global.validationOk)
{
if (Global.test_jackknife)
{ faits=faits + s + "Parameters Jackknife t-ratio test result";
Validation.getParamResult();
for(int i=0;i<Validation.nbre_par;i++)
{faits=faits + s + " " + Global.param$[i]+ " " + Global.Test_Jackknife_Param$[Global.Res_Test_Jackknife_Par[i]];
//faits=faits + s + " " + Global.param$[i]+ " " + data$[i+1][0]=Global.param$[i]+ " " + Validation.Test_Jackknife_Param$[Validation.Res_Test_Jackknife_Par[i]];
}
if (Global.test_jackknife)
{faits = faits + s + "Overall T_Jackknife on parameters: good" + s;}
else {faits = faits + s + "Overall T_Jackknife on parameters: bad" + s;}
faits = faits + s + "Jackknife coefficient of determination R²: " + nf.format(Global.jackknife) + s;
......
......@@ -9,6 +9,7 @@
package fr.ird.climprod;
import static fr.ird.climprod.Data.getNbDataRetenue;
import static fr.ird.climprod.Data.getNbYears; // Addition 2020.
import java.text.DecimalFormat;
import java.awt.Color;
......@@ -21,6 +22,7 @@ public class Modele {
static final private double eps = 1.E-8;
static final private double mul = 1.E-3;
static private int nim;
static private int nbYears; // Addition 2020.
static private double lambda;
static private int nbre_par;
static private int riter, iter, ritertot;
......@@ -52,27 +54,7 @@ public class Modele {
initVariable();
Data.init_val();
nim = Data.getNbDataRetenue();
// System.out.println("nim= " +nim);
if (nim < 12) {
if (nim < 10) {
message
= "WARNING! \nToo few d.f. in the fit due to the incorporation of lags. Owing to " + Global.nb_classes_exploitees + " annual lags included in the model, only " + nim + " pairs ";
message = message
+ "\nor triplet of values are used for fitting, which does not give enough degrees of freedom to the model.\nResults will be poor.\n";
message = message
+ "It is strongly recommanded that yoy stop her the procedure.";
MsgDialogBox msg = new MsgDialogBox(0, message, 1, Global.CadreMain);
}
else
{message = "";
message = "WARNING! \nFew d.f. in the fit due to the incorporation of lags. Owing to " + Global.nb_classes_exploitees + " annual lags included in the model, only " + nim + " pairs ";
message = message
+ "\nor triplet of values are used for fitting, which does not give enough degrees of freedom to the model.\nResults will be poor.\n";
message = message
+ "Despite this limitation I shall continue fitting.";
MsgDialogBox msg = new MsgDialogBox(0, message, 1, Global.CadreMain);
}
}
f = Data.getF();
v = Data.getV();
vbar = Data.getVbar();
......@@ -99,19 +81,21 @@ public class Modele {
}
variance_pue = variance_pue / (double) nim;
System.out.println(sompar+" et "+variance_pue);
sompar = sompar / (double) nim;
if (sompar > variance_pue) {
variance_pue = variance_pue / (double) nim; // variance_pue * nim en ligne 64...
//System.out.println("sompar 1= " + sompar + " variance_pue = " + variance_pue);
sompar = sompar / (double) nim; // Résidus moyens
//System.out.println("sompar 2 = " + sompar + " (double) nim = " + (double) nim);
if (sompar > variance_pue) { // Si résidus moyens > variance des CPUE on met r à zéro + message.
sompar = variance_pue;
}
r = (1. - sompar / variance_pue);
//System.out.println("sompar 3 = " + sompar+" r = " + r);
if (r < 0) {
r = 0;
}
if (r == 0){
message = "R2 is set to zero due to unexpected results in the variances (residual variance or total variance) computation";
message = "R2 is set to zero due to unexpected results in the variances (residual variance or total variance) computation. /This is possibly due to poor fitting by the Marquart algorithm.";
MsgDialogBox msg = new MsgDialogBox(0, message, 1, Global.CadreMain);
}
//System.out.println("Variance " + variance_pue);
......@@ -132,7 +116,30 @@ public class Modele {
makePlot();
// saveResult();
Global.modelisationOk = true;
nbYears = Data.getNbYears(); // This line and the 22 next one were added/modified to provide additional warning on df limitations. Modif, 2020.
if ((nim - nbre_par) < 10) { // nim = nbData - decalmax, as define in Data.java getNbDataRetenue()
if ((nim - nbre_par) < 8) {
message
= "WARNING! \nToo few d.f. left for fitting the retained model. \n\nOwing to " + (nbYears - nim) + " annual lags related to delay in environmental influence or \nto fishing effort averaging, and to " + nbre_par + " parameters included in the model,";
message = message
+ "\nonly " + (nim - nbre_par) + " degrees of freedom are left for fitting.\nResults will be extremely poor.\n\n";
message = message
+ " Please make sure that your estimates of: \n -the number of significantly exploited year-classes;\n -age at recruitment;";
message = message
+ "\n -age at the begining of the environmental influence; \n -age at the end of the environmental influence; \n are correct.\n\n";
message = message
+ "It is strongly recommanded that you stop here the procedure.";
MsgDialogBox msg = new MsgDialogBox(0, message, 1, Global.CadreMain);
}
else
{message = "";
message = "WARNING! \nFew d.f. left for fitting the retained model. \n\nOwing to " + (nbYears - nim) + " annual lags related to delay in environmental influence or \nto fishing effort averaging, and to " + nbre_par + " parameters included in the model,"; message = message
+ "\nonly " + (nim - nbre_par) + " degrees of freedom are left for fitting.\n\nResults will be poor.";
message = message
+ "\nDespite this warning I shall continue fitting.";
MsgDialogBox msg = new MsgDialogBox(0, message, 1, Global.CadreMain);
}
}
}
private static void calcul_val_init() {
......@@ -245,7 +252,7 @@ public class Modele {
}
inverse_gauss();
break;
case 9:
case 9: //CPUE=a.V+b.E. Commentaire 2020
nbre_par = 2;
for (k = 0; k < nim; k++) {
ptmp[0] = vbar[k];
......@@ -1014,7 +1021,7 @@ public class Modele {
data$[i + 1][1] = nf.format(par_alors[i]); // Valeur paramètre estimé fin Marquart
data$[i + 1][2] = nf.format(par_init[i]); // Valeur initiale du paramètre début Marquart
}
data$[nbre_par + 1][0] = "Nb. of data used to fit";
data$[nbre_par + 1][0] = "Nb. of data used to fit"; // Dans ce qui suit, la seconde dimension de data$ indique qu'il s'agit soit d'un titre ([0]) soit de la valeur correspondante ([0]). Commentaire 2020.
data$[nbre_par + 1][1] = Integer.toString(nim); // nim = nombre observations
data$[nbre_par + 2][0] = "Nb. of degrees of freedom";
data$[nbre_par + 2][1] = Integer.toString(nim - nbre_par);
......
/**
* Titre : Climprod<p>
* Effectue validation du modele par test Jackknife et Fisher
* Effectue validation du modele par calcul R2 conventionnel, test Jackknife et Fisher
* Calcul des MSY MSE pour les valeurs remarquables presentees dans dossier html, onglet validation
* et dans menu 'Modelisation', 'Display results tables'.
* Calcule les valeurs et affiche les graphiques MS-E & MSY versus V Plots disponibles dans
* menu principal, onglet "Plots".
*/
package fr.ird.climprod;
import static fr.ird.climprod.Data.getNbDataRetenue;
......@@ -9,9 +13,10 @@ import java.text.DecimalFormat;
import java.awt.Color;
import java.io.*;
public class Validation {
static private int nim;
//public static double[][] stat = new double[10][4]; // Modif 2020
static private int nparmax=4,nv=100; // Modif 2020
static private int jk,nbre_par;
static private int nim;
static public int jk,nbre_par;
static private int riter,iter,ritertot,maxrit=100;
static private double val_init,val_fin, alpha=4,ecart;
static private double sompar,variance_pue,eps=1.E-8,mul=1.E-3,yy,r_jk, r_tot;
......@@ -229,6 +234,8 @@ public static void valide_modele()
//int nv=50;
double var_tot, sdc_tot, sdc_jk;
double f_ms,y_ms,vmin,vmax,vv,ecartv;
Global.Res_Test_Jackknife_Par = new int[4]; // Rajout 2020.
double[] pue_c,pue_j;
/* double []f_ms_m=new double[nv];
double []f_ms_s=new double[nv];
......@@ -256,8 +263,10 @@ public static void valide_modele()
//char val[25];
/**************** initialisations ********************/
nbre_par=Global.nbre_param;
for(i=0;i<nbre_par;i++) par_init[i] = Global.val_param[i];
for(i=0;i<nbre_par;i++) {
par_init[i] = Global.val_param[i];
// Global.Res_Test_Jackknife_Par[i]=0; // Rajout 2020.
}
nim=Data.getNbDataRetenue();
res= new double[nim];
pue_c=new double[nim];
......@@ -266,7 +275,7 @@ public static void valide_modele()
v=Data.getV();
vbar=Data.getVbar();
pue=Data.getPue();
if((Global.numero_modele > 5) || (Global.numero_modele< 2)) // Exclus les modèles Schaefer et Fox + f(V) linéaire ou power ??? Commentaire 2020
if((Global.numero_modele > 5) || (Global.numero_modele< 2)) // Exclus les modèles CPUE = f(V). Commentaire 2020
for(iv=0;iv<nv;iv++){
f_ms_m[iv] = 0.0;
......@@ -311,7 +320,7 @@ public static void valide_modele()
for(i=0;i<nbre_par;i++)
pseudo[jk][i]= nim*par_init[i]-(nim-1)*par_alors[i];//ici
vv = val_v[2];
if((Global.numero_modele > 5) || (Global.numero_modele < 2)) // Exclus les modèles Schaefer et Fox + f(V) linéaire ou power ??? Commentaire 2020
if((Global.numero_modele > 5) || (Global.numero_modele < 2)) // Exclus les modèles CPUE = f(V) Commentaire 2020
for(iv=0;iv<nv;iv++){
f_ms = EquationModele.minimum_fonction(vv,par_alors);
y_ms = f_ms * EquationModele.fonction_modele(f_ms,vv,vv,par_alors);
......@@ -323,6 +332,7 @@ public static void valide_modele()
}
//******************************************************************
//*** Calcul des MSY MSE pour les valeurs remarquables**************
//*** presentees uniquement dans dossier html, onglet validation****
//******************Modifications du 20/10/96***********************
for(iv=0;iv<4;iv++){
vv = val_v[iv];
......@@ -361,11 +371,18 @@ public static void valide_modele()
/****************************** Test du Jackknife *******************************/
Global.test_jackknife=true; // Initialisation test (vrai par défaut)
// TODO vérifier et décommenter
// TODO vérifier et décommenter
for(i=0;i<nbre_par;i++)
{
if (Math.abs(par_init[i]/ecart_pseudo[i]) < 2.00) Global.test_jackknife=false; // Teste valeur ABSOLUE des ratios des paramètres du modèle (Jakknife t-ratio) par rapport a 2.OO. Si au moins 1 faux, test = faux. Commentaire 2020
System.out.println("Jackknife t-ratio = " + Math.abs(par_init[i]/ecart_pseudo[i]) + " valeur à comparer à 2.00; Test Jakknife = " + Global.test_jackknife); // Test 2020
if (Math.abs(par_init[i]/ecart_pseudo[i]) < 2.00) {
Global.test_jackknife=false;
Global.Res_Test_Jackknife_Par[i] = 1;
System.out.println("Jackknife t-ratio = " + Math.abs(par_init[i]/ecart_pseudo[i]) + " valeur à comparer à 2.00; Test Jakknife = " + Global.test_jackknife); // Test 2020
System.out.println("Ligne 380 Validation.java i: " + i + " Global.Res_Test_Jackknife_Par[i] = " + Global.Res_Test_Jackknife_Par[i]);
}
else {Global.Res_Test_Jackknife_Par[i] = 2;
System.out.println("Ligne 383 Validation.java i: " + i + " Global.Res_Test_Jackknife_Par[i] = " + Global.Res_Test_Jackknife_Par[i]);
}
}
// TODO add fisher test
/****************************************************************************/
......@@ -419,7 +436,7 @@ double[] years=Data.getYears();
String[] etiq$=new String[nim];
double[] etiq=new double[nim];
double[] serie100=new double[nim];
String message = "";
DecimalFormat df=new DecimalFormat("0");
for(int i=0;i<nim;i++)
{
......@@ -433,7 +450,7 @@ ps100.setCouleur(Color.black);
//PlotSerie[] ps=new PlotSerie[nbre_par+1];
Global.jackknifePlot= new PlotHisto[nbre_par+1];
double[] trjk;
int[] Nb_years_greater100=new int[nim]; // Test 2020
int[] Nb_years_greater100=new int[nim]; // Number of years with coefficient > 100%Test 2020
int[] Nb_years_lower100=new int[nim];
for(int i=0;i<nbre_par;i++){
trjk=new double[nim];
......@@ -445,15 +462,21 @@ for(int i=0;i<nbre_par;i++){
if (trjk[jk] < 100) Nb_years_lower100[i] = Nb_years_lower100[i] +1; // Compte le nb d'occurence <100%
if (trjk[jk] > 100) Nb_years_greater100[i] = Nb_years_greater100[i] +1; // Compte le nb d'occurence >100%
}
if (Nb_years_greater100[i] == nim || Nb_years_lower100[i] == nim) System.out.println("Problem in Jackknife computation due to CPUE values <1");
// else System.out.println("No problem in Jackknife computation Nb years = " + nim + " Nb_years_lower100[i] = " + Global.Nb_years_lower100[i] + " Nb_years_greater100[i] = " + Global.Nb_years_greater100[i]); // Test 2020
if (Nb_years_greater100[i] == nim || Nb_years_lower100[i] == nim)
{
message = "Problem in Jackknife computation due to CPUE values <1. Nb years = " + nim + "\n . Parameter " + i + " Number of years with value < 100% = " + Global.Nb_years_lower100[i] + " umber of years with value > 100% = " + Global.Nb_years_greater100[i];
MsgDialogBox msg = new MsgDialogBox(0, message, 1, Global.CadreMain);
}
//else System.out.println("No problem in Jackknife computation Nb years = " + nim + " Nb_years_lower100[i] = " + Nb_years_lower100[i] + " Nb_years_greater100[i] = " + Nb_years_greater100[i]); // Test 2020);
PlotSerie ps= new PlotSerie("Years",etiq,ty[i],trjk);
ps.setFigure(3);
Global.jackknifePlot[i]=new PlotHisto();
Global.jackknifePlot[i].setValeurs(ps100);
Global.jackknifePlot[i].setValeurs(ps);
//Global.jackknifePlot[i].setValeurs(ps100);
Global.jackknifePlot[i].setTitreGraphique(Global.titreG[i+17]);
System.out.println("Validation Plot i: " + i + " Global.Res_Test_Jackknife_Par[i]: " + Global.Res_Test_Jackknife_Par[i]);
Global.jackknifePlot[i].setTitreGraphique(Global.titreG[i+19]); // Ligne du dessous génère "Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2".
//Global.jackknifePlot[i].setTitreGraphique(Global.titreG[i+19]+ ". Test result: " + Global.Test_Jackknife_Param$[Global.Res_Test_Jackknife_Par[i]]);
Global.jackknifePlot[i].setTitreX(Global.titreSx[i+17]);
Global.jackknifePlot[i].setTitreY(Global.titreSy[i+17]);
......@@ -483,7 +506,7 @@ for(int i=0;i<nim;i++)
Global.jackknifePlot[nbre_par]=new PlotHisto();
Global.jackknifePlot[nbre_par].setValeurs(ps);
Global.jackknifePlot[nbre_par].setValeurs(ps100);
Global.jackknifePlot[nbre_par].setTitreGraphique(Global.titreG[21]+" (Jackknife R2 = "+nf.format(Global.jackknife)+")");
Global.jackknifePlot[nbre_par].setTitreGraphique(Global.titreG[23]+" (Jackknife R2 = "+nf.format(Global.jackknife)+")");
Global.jackknifePlot[nbre_par].setTitreX(Global.titreSx[21]);
Global.jackknifePlot[nbre_par].setTitreY(Global.titreSy[21]);
......@@ -502,13 +525,14 @@ for(int i=0;i<nim;i++)
Global.jackknifePlot[nbre_par].setXcutYat(0.d);
/*****************************MSE & MS-Y Plots***********************/
Global.msyPlot[0]=new Plot();
/*****************************MSE & MS-Y versus V Plots***********************/
Global.msyPlot[0]=new Plot(); // [0] MS-E versus V; & [1] MSY versus V. 2020.
Global.msyPlot[1]=new Plot();
// if suivant exclus les modèles Schaefer et Fox + f(V) linéaire ou power + modèle 16 CPUE=a.V^b+c.V^(2.b).E capturabilité, Schaefer, puissance ??? Commentaire 2020
// if suivant exclus les modèles CPUE = f(V). Commentaire 2020
if(((Global.numero_modele > 5) || (Global.numero_modele < 2)) && (Global.numero_modele != 20))
if(((Global.numero_modele > 5) || (Global.numero_modele < 2)) && (Global.numero_modele != 20)) // Exclusion modèles CPUE=f(V) et modèle exponentiel additif
{
double vv,ecartv;
......@@ -569,8 +593,13 @@ if(((Global.numero_modele > 5) || (Global.numero_modele < 2)) && (Global.numero_
for(int i=0;i<2;i++)
{
Global.msyPlot[i].setMinAxeY(0d);
Global.msyPlot[i].setDecimalsurX(0);
Global.msyPlot[i].ajusteExtremas(false,true,false,true);
/* if (stat[7][3] <10) Global.msyPlot[i].setDecimalsurX(1); // Avant setDecimalsurX(0) -> pas de décilmale sur axe des X. Avec setDecimalsurX(1) -> décimales SI NECESSAIRE. Modif 2020.
else Global.msyPlot[i].setDecimalsurX(0); // Modif 2020.
System.out.println("stat[7][3] dans Validation.java= " + stat[7][3]);
System.out.println("stat[7][2] dans Validation.java= " + stat[7][2]);
*/
Global.msyPlot[i].setDecimalsurX(1); // Avant setDecimalsurX(0). MSE & MS-Y versus V Plots Modif 2020.
Global.msyPlot[i].ajusteExtremas(false,true,false,true); // Valeurs booléenes pour ajustement extrémités axes (ne pose pas de pb ici)
Global.msyPlot[i].ShowLegend=true;
}
}
......@@ -660,7 +689,6 @@ if(!Global.validationOk) return null;
// Sous-cadre de droite de fenetre "Climprod: Fit a model directly", titre "Validation:Main results"
String [] param$={"a","b","c","d"};
String [] title$={"Parameters","Value","Jackknife Standard deviation","Jackknife t-ratio & (test)"};
Object[][] data$=new String[nbre_par+6][4];
DecimalFormat nf= new DecimalFormat(" 0.0000;-0.0000");
......@@ -672,7 +700,7 @@ int Res_Test_Jackknife_Param;
data$[0][j]=title$[j];
for(int i=0;i<nbre_par;i++)
{
data$[i+1][0]=param$[i]; // nom du paramètre de régression (a, b, ...)
data$[i+1][0]=Global.param$[i]; // nom du paramètre de régression (a, b, ...)
data$[i+1][1]=nf.format(par_init[i]); // valeur du paramètre de régression
data$[i+1][2]=nf.format(ecart_pseudo[i]); // Jackknife Standard deviation
// System.out.println("i" + i + " "+ ecart_pseudo[i]);
......
0;-1;1;41;1;;;;
1;-1;2;42;1;changement_exploitation; Have there been changes in the fishing pattern during the period (effort allocation quota mesh-size ...)?;changes.hlp ;
2;3;-1;43;1;unite_standardisee;Is the fishing effort unit standardized and is the CPUE proportional to abundance?;standard.hlp ;
3;-1;4;47;1;;;;
4;5;-1;44;1;effet_delais_abundance_negligeable;Do time-lags and deviations from the stable age structure have negligible effects on production rate?; lageffe1.hlp ;
5;9;6;-1;1;stock_unique;Does the data-set apply to a single stock?; singlest.hlp ;
6;-1;7;46;1;sous_stock;Are the different stocks independant from each other (not a metapopulation)?; substock.hlp ;
7;8;-1;45;1;sous_stock_isole;Does the data apply to the full metapopulation or at least to only one of its sub-stock well isolated (i.e. with few exchanges) from others?; isostock.hlp ;
8;9;-1;34;1;;;;
9;11;10;35;1;under_and_over_exploited;Do you think that the data-set covers periods both of overexploitation and of underexploitation?; undover.hlp ;
10;11;-1;49;1;under_and_optimaly;Do you think that the data-set cover periods both of underexploitation and optimal exploitation?; undopt.hlp ;
11;12;12;37;1;statistiques_anormales;Do you see any abnormal statistics in the statistical data table?(see the second table in the Climprod frame); abnormal.hlp ;
12;13;13;36;1;unstability;Is interannual variability too large?; unstabil.hlp ;
13;14;14;38;1;abnormal_points_dist;Do you see outlier points?; outlier.hlp ;
14;15;15;39;1;abnormal_points_scatt;Do you see outlier points?; outlier.hlp ;
15;16;16;50;1;effort_increasing;Constantly increasing effort?; increasf.hlp ;
16;17;17;40;1;independance;Are the two variables dependent?; independ.hlp ;;;;;;;;;;;
17;18;18;-1;1;nb_classes_exploitees;Number of significantly exploited year-classes; nbclass.hlp ;1;2;3;4;5;6;7;8;9;10;>10
18;19;57;-1;1;effort_preponderant;Is the influence of fishing effort on CPUE more important than environmental influence?; fishmore.hlp ;;;;;;;;;;;
19;20;-1;48;1;decreasing_relationship;Does this plot appear to be decreasing?; decreas.hlp ;;;;;;;;;;;
20;40;21;17;1;obviously;Does this plot look obviously linear?; obvious.hlp ;;;;;;;;;;;
21;40;22;18;1;pessimiste;Do you have any (additional) reason to expect highly unstable behaviour or collapse of the stock?; pessimis.hlp ;;;;;;;;;;;
22;40;23;19;1;stock_deja_effondre;Did the stock already collapse or exhibit drastic decrease(s) in catches?; collapse.hlp ;;;;;;;;;;;
23;24;24;-1;1;lifespan;What is the life span of the species?; lifespan.hlp ;1;2;3;4;5;6;7;8;9;10;>10
24;25;25;-1;1;rapport_vie_exploitee_inferieur_deux;Is the ratio (lifespan/number of exploited year-classes) lower than 2?; ratio.hlp ;;;;;;;;;;;
25;26;26;-1;1;stock_divise;Is the single stock subdivided into various geographical sub-stocks (all must be exploited by the fleet)?; stockdiv.hlp ;;;;;;;;;;;
26;27;27;-1;1;reserves_naturelles;Are there natural protected areas for the stock or constantly inacessible adult biomass?; protect.hlp ;;;;;;;;;;;
27;28;28;-1;1;premiere_reproduction_avant_recrutement;Are there one or several non negligible spawnings before recruitment?; firstspa.hlp ;;;;;;;;;;;
28;29;29;-1;1;fecondite_faible;Is the fecundity of the species very low (sharks mammals etc.)?; fecundit.hlp ;;;;;;;;;;;;;;;;;;;;;
29;30;30;-1;1;cpue_unstable;Is there a strong instability in the cpue time series?; unstabil.hlp ;;;;;;;;;;;
30;42;31;10;1;;;;;;;;;;;;;;
31;42;32;11;1;;;;;;;;;;;;;;
32;42;33;12;1;;;;;;
33;42;34;13;1;;;;;;
34;42;35;14;1;;;;;;
35;42;36;16;1;;;;;;
36;40;37;20;1;;;;;;
37;40;38;22;1;;;;;;
38;40;39;21;1;;;;;;
39;44;44;23;1;;;;;;
40;41;46;24;2;;;;;;
41;102;43;51;2;;;;;;
42;43;46;25;2;;;;;;
43;102;102;52;2;;;;;;
44;102;45;51;2;;;;;;
45;102;103;52;2;;;;;;
46;97;47;6;2;;;;;;
47;48;49;-1;1;environmental_influence;Does the environment influence:; Influenc.hlp ;abundance;catchability;both
48;51;49;-1;1;cpue_sous_sur_production;May the stock present large fluctuations in CPUE when overexploited?; additif.hlp ;;;;;;;;;;;;
49;52;50;17;1;linear_relationship;Does this plot look linear; linear.hlp ;;;;;;;;;;;;
50;52;52;-1;1;monotonic_relationship;Does this plot look monotonic?; monotoni.hlp ;;;;;;;;;;;;
51;52;105;-1;1;linear_relationship;Does this plot look linear?; linear.hlp ;;;;;;;;;;;;
52;53;53;-1;1;recruitment_age;Age at recruitment; Agerec.hlp ;1;2;3;4;5;6;7;8;9;10;>10;
53;54;54;-1;1;begin_influence_period;Age at the begining of environmental influence; begin.hlp ;0;1;2;3;4;5;6;7;8;9;10;>10
54;55;55;-1;1;end_influence_period;Age at the end of environmental influence; end.hlp ;0;1;2;3;4;5;6;7;8;9;10;>10
55;97;56;4;2;;;;;;;;;;;;;;;
56;97;-1;5;2;;;;;;;;;;;;;;;
57;58;58;-1;1;recruitment_age;Age at recruitment; Agerec.hlp ;1;2;3;4;5;6;7;8;9;10;>10;
58;59;59;-1;1;begin_influence_period;Age at the begining of environmental influence; begin.hlp ;0;1;2;3;4;5;6;7;8;9;10;>10
59;60;60;-1;1;end_influence_period;Age at the end of environmental influence; end.hlp ;0;1;2;3;4;5;6;7;8;9;10;>10
60;62;61;-1;1;linear_relationship;Does_this_plot_look_linear?; linear.hlp ;;;;;;;;;;;;
61;63;64;-1;1;monotonic_relationship;Does this plot look monotonic?; monotoni.hlp ;;;;;;;;;;;;
62;65;63;26;1;;;;;;;;;;;;;;;
63;65;64;28;1;;;;;;;;;;;;;;;
64;65;65;29;1;;;;;;;;;;;;;;
65;97;66;9;2;;;;;;;;;;;;;;
66;-1;67;53;2;;;;;;;;;;;;;;
67;68;69;-1;1;environmental_influence;Does the environment influence:; Influenc.hlp ;abundance;catchability;both;;;;;;;;
68;69;69;-1;1;cpue_sous_sur_production;May the stock present large fluctuations in CPUE when overexploited?; additif.hlp;;;;;;;;;;;
69;89;70;17;1;obviously;Does this plot look obviously linear?; obvious.hlp ;;;;;;;;;;;
70;89;71;18;1;pessimiste;Do you have any (additional) reason to expect highly unstable behaviour or collapse of the stock?; pessimis.hlp ;;;;;;;;;;;
71;89;72;19;1;stock_deja_effondre;Did the stock already collapse or exhibit drastic decrease(s) in catches?; collapse.hlp ;;;;;;;;;;;
72;73;73;-1;1;lifespan;What is the life span of the species?; lifespan.hlp ;1;2;3;4;5;6;7;8;9;10;>10
73;74;74;-1;1;rapport_vie_exploitee_inferieur_deux;Is the ratio (lifespan/number of exploited year-classes) lower than 2?; ratio.hlp ;;;;;;;;;;;
74;75;75;-1;1;stock_divise;Is the single stock subdivided into various geographical sub-stocks (all must be exploited by the fleet)?; stockdiv.hlp ;;;;;;;;;;;
75;76;76;-1;1;reserves_naturelles;Are there natural protected areas for the stock or constantly inacessible adult biomass?; protect.hlp ;;;;;;;;;;;
76;77;77;-1;1;premiere_reproduction_avant_recrutement;Are there one or several non negligible spawnings before recruitment?; firstspa.hlp ;;;;;;;;;;;
77;78;78;-1;1;fecondite_faible;Is the fecundity of the species very low (sharks mammals etc.)?; fecundit.hlp ;;;;;;;;;;;;;;;;;;;;;
78;79;79;-1;1;cpue_unstable;Is there a strong instability in the cpue time series?; unstabil.hlp ;;;;;;;;;;;
79;91;80;10;1;;;;;;;;;;;;;;
80;91;81;11;1
81;91;82;12;1
82;91;83;13;1
83;91;84;14;1
84;91;85;16;1
85;89;86;20;1
86;89;87;22;1
87;89;88;21;1
88;93;93;23;1
89;90;95;24;2
90;92;92;51;2
91;92;95;25;2
92;95;95;52;2
93;97;94;51;2
94;95;95;52;2
95;97;96;7;2
96;97;-2;8;2;;;;
97;98;-3;0;3;good_results;Is this an acceptable model?; acceptab.hlp ;
98;99;-3;15;3;trend_residuals;Are there a good fit and no trend or strong autocorrelation in residuals?; fitresid.hlp ;
99;104;100;2;3;;;;
100;101;-3;1;3;jackknife;Is there a reasonable jackknife coefficient R2 (>65% recommended) no extreme yearly regression coefficients, an acceptable F test (p<0.01 recommended) and acceptable MSY graph ?; valide.hlp ;;;;;;;;;;;;
101;-4;-4;3;3;;;;
102;-1;47;54;2
103;46;102;55;2
104;-3;-3;56;2
105;-1;-1;57;2
\ No newline at end of file
0;0;Model X is not validated if:; model X is convenient ; -you graphically do not find an acceptable model. ;;;;;;;
15;0;Model X is not validated if:; X is convenient ; -you graphically do not find trend and/or strong autocorrelation in the residuals. ;;;;;;
1;0;Model X is not validated if:; model X is convenient ; -in validating you do not find a reasonable coefficient of determination R2 or stability in the model when removing some years from the data-set (Jackknife test); -or the CPUE = f(V,E) & Y = f(V,E) graphs are not shaped as expected. ;;;;;
55;0;Model X is not validated if:;model X is convenient;-the MSY or MS-E versus V graphs are not shaped as expected.;;;;;;
2;0;Model X is not validated if:; model X is convenient ; -in validating the model, the software do not find Student's t test on jackknife acceptable ;;;;;;
3;0;Model X is validated if:; X is convenient ; -you graphically find an acceptable model; -in validating the software find Student's t test acceptable; -in validating you find a reasonable coefficient of determination (>65) or stability in the model when removing some years from the data-set; -and the MS-Y versus V graph is shaped as expected; you graphically find no trend and no strong autocorrelation in residuals. ;;
3;0;Model X is validated if:; X is convenient ; -you graphically find an acceptable model; -in validating the software find Student's t test acceptable; -in validating you find a reasonable coefficient of determination (>65) or stability in the model when removing some years from the data-set; -in validating you graphically find no trend and no strong autocorrelation in residuals; -and the MSY & MS-E versus V graphs ares shaped as expected.
(>65) or stability in the model when removing some years from the data-set; -and the MS-Y versus V graph is shaped as expected; you graphically find no trend and no strong autocorrelation in residuals. ;;
4;0;A mixed model M CPUE=f(E,V) is convenient if:; -effort is preponderant ; -a simple model CPUE f(E) M1 is deduced; -Model M1 has a coefficient of determination R2 lying between 40 and 90; -the environmental effect is T (abundance or catchability or both); -the stock may not present large fluctuations in CPUE when overexploited; a simple model residuals f(V) M2 is deduced; -a mixed model M CPUE f(E,V) is a consequent of the simple models M1 and M2 knowing the effect is T; -Model M has a coefficient of determination R2 > 70.
5;0;A mixed additive model M CPUE= a exp(bE) + cV +d is convenient if:; -effort is preponderant ; -a simple model CPUE f(E) M1 is deduced; -M1 is exponential; -Model M1 has a coefficient of determination R2 lying between 40 and 90; -the environmental effect is abundance; -the stock may present large fluctuations in CPUE when overexploited; -a simple model residuals f(V) M2 is deduced; -a mixed model M CPUE f(E,V) is a consequent of the simple models M1 and M2 knowing the effect is T; -Model M has a coefficient of determination R2 > 70.
6;0;A simple model M is convenient if:; -effort is preponderant ; -a simple model CPUE f(E) M is deduced; -Model M has a coefficient of determination R2 lying between 90 and 100. ;;;;;;
......@@ -14,13 +16,13 @@
12;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -the graphic relation CPUE/E is not obviously linear ; -you have no reason to be pessimistic; -stock did not collapse; -lifespan of species lies between 5 and 11; there is first reproduction before recruitment; fecundity is not very low. ;;;
13;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -the graphic relation CPUE/E is not obviously linear ; -you have no reason to be pessimistic; -stock did not collapse; -lifespan of species lies between 5 and 11; -there are natural protected areas; fecundity is not very low. ;;;
14;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -the graphic relation CPUE/E is not obviously linear ; -you have no reason to be pessimistic; -stock did not collapse; -lifespan of species lies between 5 and 11; -stock is subdivided in sub-stocks; fecundity is not very low. ;;;
16;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -the graphic relation CPUE/E is not obviously linear ; -you have no reason to be pessimistic; -stock did not collapse; -lifespan/number of exploited years classes > 2; -there is first reproduction before recruitment; -there are natural protected areas; -your data-set deals with a metapopulation or at least one of its substocks; -fecundity is not very low.
16;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -the graphic relation CPUE/E is not obviously linear ; -you have no reason to be pessimistic; -stock did not collapse; -lifespan/number of exploited years classes > 2; -there is first reproduction before recruitment; -there are natural protected areas; -stock is subdivided in sub-stocks; -fecundity is not very low.
17;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -the graphic relation CPUE/E is obviously linear.;;;;;;;
18;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -you have reason to be pessimistic.;;;;;;;
19;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -stock collapsed.;;;;;;;
20;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; lifespan < 5 ; -lifespan/number of exploited years classes < 2; -there is not first reproduction before recruitment. ;;;;;
20;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; lifespan < 5 ; lifespan/number of exploited years classes < 2; there is not first reproduction before recruitment. ;;;;;
21;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -fecondity is low.;;;;;;;
22;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -lifespan < 5 ; -lifespan/number of exploited years classes < 2; -there are natural protected areas; -your data-set does not deal with a metapopulation or at least one of its substocks; -CPUE is not unstable. ;;;
22;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -lifespan < 5 ; -lifespan/number of exploited years classes < 2; -there are natural protected areas; -stock is not subdivided in sub-stocks; -CPUE is not unstable. ;;;
23;0;A simple model CPUE=f(E) or Residuals=f(E) of generalized type is deduced if:; -neither an exponential ; -nor a linear model has been deduced ;;;;;;
24;0;A simple model CPUE=f(E) or Residuals=f(E) of generalized type is deduced if:; -a linear model has been deduced ; -this model has a coefficient of determination R2 < 40 ;;;;;;
25;0;A simple model CPUE=f(E) or Residuals=f(E) of generalized type is deduced if:; -an exponential model has been deduced ; -this model has a coefficient of determination R2 < 40 ;;;;;;
......@@ -30,7 +32,7 @@
31;0;Effect is abundance if:; -you answer abundance to the environmental influence question.;;;;;;;
32;0;Effect is catchability if:; -you answer catchability to the environmental influence question.;;;;;;;
33;0;Effect is abundance catchability if:; -you answer both or I do not know to the environmental influence question.;;;
34;0;stock assessment is uncertain if:; -stock is not single ; -there is a metapopulation; -either the a metapopulation displays a high connectivity between its sub-stocks or only a sub-stock of it with low connectivity. ;
34;0;stock assessment is uncertain if:; stock is not single ; -there is a sub-stock; -this sub-stock is well isolated from the others ;
35;0;Model results are uncertain -particularly maximum productions- if:; -the data-series does not cover periods of both underexploitation and overexploitation ;
49;0;Model results are inappropriate for assessment and predicition if:; -the data-series does not cover periods of both under exploitation and overexploitation; -the data-series does not cover periods of both underexploitation and of optimal exploitation;
36;0;Modelization is not reliable if:; -you graphically detect unstability in the time plots .;;;
......@@ -42,15 +44,15 @@
42;1;A basic assumption is not verified if:; -there have been changes in fishing pattern.;;;
43;1;A basic assumption is not verified if:; -fishing effort unit is not standardized ; -the CPUE is not a good index of abundance variations ;;
44;1;A basic assumption is not verified if:; -time lags have effects on production rate.;;;
45;1;A basic assumption is not verified if:; -stock is not single ; -there is a metapopulation; -either the a metapopulation displays a low connectivity between its sub-stocks or only a sub-stock of it with high connectivity with the rest of the sub-stocks.;
46;1;A basic assumption is not verified if:; -stock is not single ; -there is no metapopulation ;;
47;1;Model results are not usable if:; -the relative range of observed effort values (Max-Min)/Min is < 1.0 (factor x2).;;;
45;1;A basic assumption is not verified if:; -stock is not single ; -there is a sub-stock; this sub-stock is not well isolated ;
46;1;A basic assumption is not verified if:; -stock is not single ; -this stock is not a sub-stock ;;
47;1;Model results are not usable if:; -the relative range of observed effort values (Max-Min)/Min is < 0.4.;;;
48;1;Your assumption on preponderance of fishing effort on CPUE is not verified if:; -you stated that effort is preponderant ; -and the graph CPUE/E is not decreasing ;
50;0;Maximum productions are overestimated if:; -you graphically detect a constantly increasing effort.;;
51;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -a generalized model was fitted and coefficient c (m in the Pella and Tomlinson notation) value was lying between 1.8 and 2.2 ; -this model has a coefficient of determination R2 > 40.;
52;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -a generalized model was fitted and coefficient c (m in the Pella and Tomlinson notation) value was lying between 1.2 and 0.8; A simple model CPUE=f(E) or Residuals=f(E) of linear type has not been deduced; -you have no reason to be pessimistic.;
51;0;A simple model CPUE=f(E) or Residuals=f(E) of linear type is deduced if:; -a generalized model was fitted and coefficient c (m in the Pella and Tomlinson notation) value was lying between 1.8 and 2.2 ; -this model has a coefficient of determination R2 > 40; -a simple model CPUE=f(E) or Residuals=f(E) of linear type has not been deduced.;
52;0;A simple model CPUE=f(E) or Residuals=f(E) of exponential type is deduced if:; -a generalized model was fitted and coefficient c (m in the Pella and Tomlinson notation) value was lying between 0.8 and 1.2; -this model has a coefficient of determination R2 > 40; -a simple model CPUE=f(E) or Residuals=f(E) of exponential type has not been deduced; -you have no reason to be pessimistic.;
53;1;A simple model CPUE=f(V) is not convenient if:; -this model has a coefficient of determination R2 < 40.;;;
54;1;A simple model CPUE=f(E) is not convenient if:; -this model has a coefficient of determination R2 < 40.;;;
55;0;The model is generalized if:; -this model has a coefficient of determination R2 > 40.;;;
56;0;The jackknife is not validated;Jackknife plots are shown;;;
57;0;;There is no model appropriate to your case;;;;
56;0;A mixed additive model M CPUE=f(E,V) is not looked for if:; -the relationship CPUE residual = f(E) is not exponential.;;;
57;1;A mixed additive model M CPUE= a exp(bE) + cV +d is deduced if:; -effort is preponderant ; -a simple model CPUE f(E) M1 is deduced; -M1 is exponential; -Model M1 has a coefficient of determination R2 lying between 40 and 90; -the environmental effect is abundance; -the stock may present large fluctuations in CPUE when overexploited; -a simple linear model residuals f(V) M2 of is deduced.;
58;0;Graphs MSY MSE vs V shown during validation if:; -retained model not exponential additive; -retained model not a simple model CPUE=f(V);;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment