Commit ef7452b2 authored by pfreon's avatar pfreon
Browse files

Moderate changes

Rajout de la présentation des graphiques jackknife sous forme d'une fenêtre à onglets lors de validation du modèle si écran trop petit.
Rajout d'un fichier .CLI avec 11 années seulement pour test.
Suppression d'un doublon de nom du R² jackknife (Global.jackknife; maintenant uniquement Global .r_jk).
Corrections mineures (majuscules/mninuscules, espaces en trop, orthographe) des textes ou intitulés.
Elimination du fichier SAVE.HLP inutilisé.
Rajout mineur dans fichier VALIDE.HLP concernant p<0.05 de t jackknife si ordonnée à l'origine.
parent 0be7314a
Years;Production;Effort;Environment
1987.000000; 149161.000000; 58.900000; 1.025
1988.000000; 189166.000000; 78.300000; 1.07
1989.000000; 149672.000000; 65.100000; 1.02
1990.000000; 87206.000000; 35.500000; 0.975
1991.000000; 87690.000000; 33.600000; 1.30000
1992.000000; 31912.000000; 11.400000; 0.17500
1993.000000; 35864.000000; 8.900000; 0.97500
1994.000000; 61097.000000; 11.700000; 0.6250000
1995.000000; 59383.000000; 10.300000; 2.0000
1996.000000; 56867.000000; 19.300000; 1.22500
1997.0;70000.0;120.0;1.5
......@@ -110,10 +110,10 @@ public class Cadre_Faits extends JFrame {
}
if(Global.validationOk)
{
if(Global.jackknife != 0.00)
faits=faits+s+"Jackknife coefficient of determination R²: " + Global.jackknife+s;
if(Global.r_jk != 0.00)
faits=faits+s+"Jackknife coefficient of determination R²: " + Global.r_jk+s;
else
faits=faits+s+"Jackknife coefficient of determination R²***: " + Global.jackknife+s;
faits=faits+s+"Jackknife coefficient of determination R²***: " + Global.r_jk+s;
faits=faits+s+"***Jackknife R² estimate was negative and consequently set to zero.\nThis result is due to poor fitting by the Marquart algorithm\nand it is commonly observed when the model does not include\nan intercept parameter or when the model includes a non-linear function.\nConsequently the display of the jackknife R² graph is not available.";
if(Global.test_jackknife)
faits=faits+"T_Jackknife: good"+s;
......
......@@ -138,36 +138,36 @@ public class Cadre_Modele extends JDialog {
switch (RechercheModele.getType()) {
case RechercheModele.effort:
jTextAreaModele.setText("Knowing the relationship between Cpue and E is " + RechercheModele.getCpue_ERelation());
jTextAreaModele.setText("Knowing the relationship between CPUE and E is " + RechercheModele.getCpue_ERelation());
jTextAreaModele.append("\n\t");
jTextAreaModele.append("A possible Conventional models CPUE=f(E) could be " + RechercheModele.getEquation());
jTextAreaModele.append("A possible conventional models CPUE=f(E) could be " + RechercheModele.getEquation());
break;
case RechercheModele.climat:
jTextAreaModele.setText("Knowing the relationship between Cpue and V is " + RechercheModele.getCpue_VRelation());
jTextAreaModele.setText("Knowing the relationship between CPUE and V is " + RechercheModele.getCpue_VRelation());
jTextAreaModele.append("\n\t");
jTextAreaModele.append("A possible Conventional models CPUE=f(V) could be " + RechercheModele.getEquation());
jTextAreaModele.append("A possible conventional models CPUE=f(V) could be " + RechercheModele.getEquation());
break;
case RechercheModele.mixte:
if (Global.effort_preponderant == 1) {
jTextAreaModele.setText("Knowing the relationship between Cpue and E is " + RechercheModele.getCpue_ERelation());
jTextAreaModele.setText("Knowing the relationship between CPUE and E is " + RechercheModele.getCpue_ERelation());
jTextAreaModele.append("\n");
jTextAreaModele.append("Knowing the environmental effect is " + Global.environmental_influence);
jTextAreaModele.append("\n\t");
jTextAreaModele.append("The rule governing the relationship between residual Cpue and V is " + RechercheModele.getCpue_VRelation());
jTextAreaModele.append("The rule governing the relationship between residual CPUE and V is " + RechercheModele.getCpue_VRelation());
jTextAreaModele.append("\n\t");
jTextAreaModele.append("A possible global model could be " + RechercheModele.getEquation());
} else {
jTextAreaModele.setText("Knowing the relationship between Cpue and V is " + RechercheModele.getCpue_VRelation());
jTextAreaModele.setText("Knowing the relationship between CPUE and V is " + RechercheModele.getCpue_VRelation());
jTextAreaModele.append("\n");
jTextAreaModele.append("Knowing the environmental effect is " + Global.environmental_influence);
jTextAreaModele.append("\n\t");
jTextAreaModele.append("The rule governing the relationship between residual Cpue and E is " + RechercheModele.getCpue_ERelation());
jTextAreaModele.append("The rule governing the relationship between residual CPUE and E is " + RechercheModele.getCpue_ERelation());
jTextAreaModele.append("\n\t");
jTextAreaModele.append("A possible global model could be " + RechercheModele.getEquation());
}
break;
default:
jTextAreaModele.setText("no convenient model found\n\nThere is no available model appropriate to your case");
jTextAreaModele.setText("No convenient model found\n\nThere is no available model appropriate to your case");
//cmdFit.setEnabled(false);
//cmdNext.setEnabled(true);
......
......@@ -437,7 +437,7 @@ public class Cadre_Question extends JFrame
else
if (numQ == -3)
{
new MsgDialogBox(0, "The selected model is not validated due to your answer or to the jackknife statistical test \non at least one of the coefficients of the model (see the jackknife plots and the \n'Current known facts' section in the CLIMPROD main frame after closing \nthis dialog box.", 0, this.parent);
new MsgDialogBox(0, "The selected model is not validated due to your answer.", 0, this.parent);
QuestionReponse.reset();
this.dispose();
Global.CadreQuestion = null;
......@@ -456,7 +456,7 @@ public class Cadre_Question extends JFrame
dlgSp.setVisible(false);
dlgSp = null;
}
new MsgDialogBox(0, "The model is validated. \nYou can use this model for prediction, \ndisplay result tables through the 'Modelization' menu \nand built a folder containing .html and .jpg files of the history \nof all results (graphs & tables) and answers to question \nthrough the 'File' menu.", 1, this.parent);
new MsgDialogBox(0, "The model is validated. \nYou can use this model for prediction, \ndisplay result tables through the 'Modelization' menu \nand built a folder containing .html and .jpg files of the history \nof all results (graphs & tables) and answers to questions \nthrough the 'File' menu.", 1, this.parent);
QuestionReponse.reset();
this.dispose();
......@@ -532,6 +532,7 @@ public class Cadre_Question extends JFrame
dlgSp.dispose();
}
dlgSp = null;
Global.JackknifePlot = false;
switch (numQ) { // correspond en fait au n° de décision dans Arbre_Decision.csv
case 12:
dlgSp = new Cadre_SplitPlot(Global.timePlot);
......@@ -572,14 +573,24 @@ public class Cadre_Question extends JFrame
case 96:
dlgSp = new Cadre_SplitPlot(Global.fittedCpuePlot, true);
break;
case 98:
dlgSp = new Cadre_SplitPlot(Global.jackknifePlot);
case 97:
dlgSp = new Cadre_SplitPlot(Global.jackknifePlot, false); // Complété ci-dessous par instructions extraites de CadreMain.java lignes 681 etc pour affichage onglets jackknife de menu principal Plots si écran trop petit.
GraphicsDevice gd = Global.CadreMain.getGraphicsConfiguration().getDevice();
int xscr = gd.getDisplayMode().getWidth(); // Obtient la résolution en largeur de l'écran de l'ordi utilisé.
if (xscr < 1800) {
Global.JackknifePlot = true;
Cadre_Plot dlg;
dlg = new Cadre_Plot(Global.jackknifePlot);
dlg.setTitle("Climprod: Jackknife plots");
dlg.setVisible(true);
Global.CadreJackniffePlots = dlg;
}
break;
case 99:
dlgSp = new Cadre_SplitPlot(Global.msyPlot);
break;
}
if (dlgSp != null) {
if (dlgSp != null || Global.JackknifePlot == true) { // Vérifie si existe ou non fenêtre graphique à droite de fenêtre Question.
UtilCadre.leftResize(this, 35, 95); // 35 -> 13 et 95 ->48 pour réduire largeur fenêtre Question lors de présentation graphiques. Premier chiffre affecte largeur fenetre, second ?? Test 2020
UtilCadre.rightResize(dlgSp, 65, 95); // 65 -> 40 pour réduire largeur fenêtre Graphique lors de présentation graphiques. Premier chiffre affecte largeur fenetre, second ?? Test 2020
//System.out.println("Définition dans ligne 554-5 de Cadre_Question.java des Facteurs de réduction (13, 48) de leftResize par rapport à max pour questions sur graphiques (sx et sy ligne 73 UtilCadre.java) 35 -> 13 et 95 ->48");// Test 2020
......
......@@ -72,7 +72,7 @@ public class Data {
makePlot(false);
statistiques();
makeDataTable();
makeCorrelationTable(); // Coeffeicien de correlation sur les rangs de Spearman (rho)
makeCorrelationTable(); // Coefficient de correlation sur les rangs de Spearman (Rho)
} catch (Exception e) {
nbData = 0;
MsgDialogBox msg = new MsgDialogBox(0, e.getMessage(), 0, Global.CadreMain);
......@@ -121,7 +121,7 @@ public class Data {
}
/**
* Retourne la production yexp aprs prise en cpte du dcalage
* Retourne la production yexp aprés prise en cpte du décalage
*
* @return un double[], la production ou null si fichier non valide
*/
......@@ -134,8 +134,8 @@ public class Data {
}
/**
* Retourne la production par unite d'effort de peche aprs prise en cpte du
* dcalage
* Retourne la production par unite d'effort de peche aprés prise en cpte du
* décalage
*
* @return un double[], ou null si fichier non valide
*/
......@@ -148,7 +148,7 @@ public class Data {
}
/**
* Retourne l'environnement aprs prise en cpte du dcalage
* Retourne l'environnement aprés prise en cpte du décalage
*
* @return un double[], ou null si fichier non valide
*/
......@@ -161,7 +161,7 @@ public class Data {
}
/**
* Retourne l'effort de peche aprs prise en cpte du dcalage
* Retourne l'effort de peche aprés prise en cpte du décalage
*
* @return un double[], ou null si fichier non valide
*/
......@@ -174,7 +174,7 @@ public class Data {
}
/**
* Retourne l'effort de peche aprs prise en cpte du dcalage
* Retourne l'effort de peche aprés prise en cpte du décalage
*
* @return un double[], ou null si fichier non valide
*/
......@@ -187,7 +187,7 @@ public class Data {
}
/**
* Retourne la periode d'observation aprs prise en cpte du dcalage
* Retourne la periode d'observation aprés prise en cpte du décalage
*
* @return un double[], ou null si fichier non valide
*/
......@@ -200,7 +200,7 @@ public class Data {
}
/**
* Retourne le nombre de donnes retenues
* Retourne le nombre de données retenues
*
* @return un entier, ou null si fichier non valide
*/
......@@ -447,7 +447,7 @@ public class Data {
}
/* ************** Indpendance plot *************************/
/* ************** Indépendance plot *************************/
Global.indePlot = new Plot();
Global.indePlot.setValeurs(new PlotSerie("Environement (V)", Data.v, "Effort (E)", Data.f));
Global.indePlot.setTitreGraphique(Global.titreG[14]);
......@@ -457,8 +457,8 @@ public class Data {
}
/*
*Calcule les principales statistiques sur les donnes.
*Utilis� � la lecture du fichier ( ce stade la variable stat ne tient past cpte du dcalage)
*Calcule les principales statistiques sur les données.
*Utilisé à la lecture du fichier (à ce stade la variable stat ne tient past cpte du décalage)
*/
private static void statistiques()
{
......@@ -499,7 +499,7 @@ public class Data {
}
/*
Donne les principaux rsultats
Donne les principaux résultats
@return Object[][] ou null si fichier invalide
*/
public static Object[][] getStatistics() {
......@@ -517,11 +517,11 @@ public class Data {
"Range",
"Median"
};
String[] title$ = {"Statistics ", "Production", "CPUE", "Effort", "Environment"};
String[] title$ = {"Statistics ", "Production", "CPUE", "Effort (E)", "Envir. (V)"};
Object[][] data$ = new String[11][5];
// DecimalFormat nf0= new DecimalFormat("0");
// DecimalFormat nf0= new DecimalFormat("0");
// DecimalFormat nf= new DecimalFormat(" 0.000000;-0.000000");
DecimalFormat nf = new DecimalFormat(" 0.######;-0.######");
DecimalFormat nf = new DecimalFormat(" 0.#####;-0.#####");
for (int j = 0; j < 5; j++) {
data$[0][j] = title$[j];
}
......@@ -539,7 +539,7 @@ public class Data {
/*
Donne le tableau de donnes (attention ne prend pas en cpte le dcalage)
Donne le tableau de données (attention ne prend pas en cpte le décalage)
@return Object[][] ou null si fichier invalide
*/
public static Object[][] getDataTable() {
......@@ -552,7 +552,7 @@ public class Data {
}
/*
Donne le tableau des coeffeicien de correlation sur les rangs de Spearman (rho)
Donne le tableau des coeffeicien de correlation sur les rangs de Spearman (Rho)
entre variables. Affiché dans menu principal après ouverture du fichier de données.
@return Object[][] ou null si fichier invalide.
*/
......@@ -566,17 +566,17 @@ public class Data {
}
/*
*Donne le tableau de donnes
*Utilis� � la lecture du fichier ( ce stade la variable stat ne tient past cpte du dcalage)
*Donne le tableau de données
*Utilisé à la lecture du fichier (à ce stade la variable stat ne tient past cpte du décalage)
*/
private static void makeDataTable() {
if (!existFile) {
return;
}
String[] title$ = {"Years ", "Production", "CPUE", "Effort", "Environment"};
String[] title$ = {"Years ", "Production", "CPUE", "Effort (E)", "Envir. (V)"};
dataTable = new String[nbData + 1][5];
// DecimalFormat nf0= new DecimalFormat(" 0;-0");
// DecimalFormat nf0= new DecimalFormat(" 0;-0");
// DecimalFormat nf= new DecimalFormat(" 0.000000;-0.000000");
DecimalFormat nf = new DecimalFormat(" 0.######;-0.######");
for (int j = 0; j < 5; j++) {
......@@ -595,18 +595,18 @@ public class Data {
/*
Donne le tableau de donnes (attention prend en cpte le dcalage)
Donne le tableau de données (attention prend en cpte le décalage)
@return Object[][] ou null si fichier invalide
* Coeffeicien de correlation sur les rangs de Spearman (rho)
* Coefficient de correlation sur les rangs de Spearman (Rho)
*/
private static void makeCorrelationTable() {
if (!existFile) {
return;
}
String[] title$ = {"Correlations (rho)", "Production", "CPUE", "Effort", "Environment"};
String[] title$ = {"Rank Corr. (Rho)", "Production", "CPUE", "Effort (E.)", "Envir. (V.)"};
dataCorrelation = new String[5][5];
DecimalFormat nf = new DecimalFormat(" 0.000000;-0.000000");
DecimalFormat nf = new DecimalFormat(" 0.000;-0.000");
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 5; j++) {
......
......@@ -20,7 +20,7 @@ import java.io.InputStream;
import java.util.StringTokenizer;
public class Global {
static boolean JackknifePlot; // Flag graphique Jackknife en onglets en même temps que questions. Rajout 2020
static final String[] influenceEnv = {"", "abundance", "catchability", "both"};//probl�me du both
static JFrame CadreQuestion; //Une seule instance est permise pour l'instant
static JFrame CadreModeleDirect;
......@@ -41,8 +41,10 @@ public class Global {
*/
static boolean range_data; // Does the relative range of observed value<0.4
static String double_click; // Averstissement usage double click. Rajout 2020
static int dbl_click;
static int changement_exploitation; // Have there been changes in the fishing pattern during the period (effort allocation, quota, mesh-size ...)
static int metapopulation; // Does the data-set apply to a sub-stock
static int metapopulation; // Does the data-set apply to a sub-stock
static int stock_unique; // Does the data-set apply to a single stock
static int stock_divise; // Is the single stock subdivided into various geographical sub-stocks (all must be exploited by the fleet)
static int unite_standardisee; // Is the fishing effort unit standardized and is the CPUE proportional to abundance
......@@ -93,7 +95,7 @@ public class Global {
/*
* *********Validation***************************
*/
static double jackknife, fF;
static double fF, r_jk;
static String fFsignif$;
static String message2$ ="";
static int Flag_pb_jackknife_Tot;
......@@ -248,7 +250,7 @@ public class Global {
cpue_sous_sur_production = -1; // May the stock present large fluctuations in CPUE when overexploited
jackknife = 0.0d; // Reasonable jackknife coefficient R2 (>65% recommended), no extreme yearly coefficient, and acceptable MSY graph
r_jk = 0.0d; // Reasonable jackknife coefficient R2 (>65% recommended), no extreme yearly coefficient, and acceptable MSY graph
test_jackknife = false;
coeff_determination_instable = -1;
/**
......
......@@ -94,7 +94,7 @@ public class Modele {
r = (1. - sompar / variance_pue);
// System.out.println("r = " + r + " nim = " + nim + " nbre_par = " + nbre_par);
Global.corrected_R2 = 1. - (((double)nim - 1.) / ((double)nim - (double)nbre_par)) * (1. - r); // Addition 2020
System.out.println("Global.corrected_R2 = " + Global.corrected_R2 + " r = " + r + " nim = " + nim + " nbre_par = " + nbre_par);
//System.out.println("Global.corrected_R2 = " + Global.corrected_R2 + " r = " + r + " nim = " + nim + " nbre_par = " + nbre_par);
//System.out.println("sompar 3 = " + sompar+" r = " + r);
if (r < 0) {
r = 0;
......@@ -1065,10 +1065,7 @@ public class Modele {
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);
if (r != 0.0)
data$[nbre_par + 3][0] = "Coefficient of determination R²";
else
data$[nbre_par + 3][0] = "Coefficient of determination R²"; // Rajout 2020.
data$[nbre_par + 3][0] = "Coef. of determination R²";
data$[nbre_par + 3][1] = nf2.format(r);
// System.out.println("r : "+r+" et globalr : "+Global.coeff_determination); // r = Global.coeff_determination ligne 111
......@@ -1082,16 +1079,16 @@ public class Modele {
data$[nbre_par+5][0]= "Fisher test: F p-value";
if (Global.fF < (Global.TableFisher_p_05 [nimTabFish- Global.nbre_param - 1][Global.nbre_param - 1 - 1])) {// The last -1 term is here to compensate the fact that table indices start at 0 and not at 1.
data$[nbre_par+5][1]= " >0.05";
Global.fFsignif$ = ", p>0.05"; // Do not use p>0.05 because this is not compatible with the path of the html graph file.
Global.fFsignif$ = " p>0.05"; // Do not use p>0.05 because this is not compatible with the path of the html graph file.
}
else
if (Global.fF >= Global.TableFisher_p_05 [nimTabFish - Global.nbre_param - 1][Global.nbre_param - 1 - 1] && Global.fF < Global.TableFisher_p_01 [nimTabFish - Global.nbre_param - 1][Global.nbre_param - 1 -1]) {
data$[nbre_par+5][1]= ", <0.05";
Global.fFsignif$ = ", p<0.05";
data$[nbre_par+5][1]= " <0.05";
Global.fFsignif$ = " p<0.05";
}
else {
data$[nbre_par+5][1]= " <0.01";
Global.fFsignif$ = ", p<0.01";
Global.fFsignif$ = " p<0.01";
}
data$[nbre_par + 6][0] = "Corrected R² ";
data$[nbre_par + 6][1] = nf2.format(Global.corrected_R2);
......
......@@ -236,7 +236,7 @@ public static String getEquation(){
if(foundModel)
return equation[indexEnCours];
else
return "no selected model";
return "No selected model";
}
......@@ -275,7 +275,7 @@ public static String getCpue_VRelation(){
return "";
}
else
return "no selected model";
return "No selected model";
}
/*
......@@ -318,7 +318,7 @@ public static String getCpue_ERelation(){
return "";
}
else
return "no selected model";
return "No selected model";
}
......
......@@ -88,8 +88,9 @@ public class UtilCadre
int x = gd.getDisplayMode().getWidth() * sx / 100; // Test 2020 intialement /100 ->190. Affecte largeur cadre principal ou Select (alternative if (x > 1366) x = 1366;)
int y = gd.getDisplayMode().getHeight() * sy / 100; // Test 2020 intialement /100 ->195. Affecte hauteur cadre principal
//System.out.println("Taille fenêtre principale ou Select (JFrame) int x et y ligne 88 UtilCadre.java = " + x + " " + y + " sx = " + sx + " sy = " + sy); // Test 2020
f.setSize(x, y);
// System.out.println("Taille fenêtre principale ou Select (JFrame) int x et y ligne 88 UtilCadre.java = " + x + " " + y); // Test 2020
//System.out.println("f.setSize(x, y) ligne 88 UtilCadre.java = " + f); // Test 2020
}
static public void Size(JDialog f, int sx, int sy, boolean screen)
......
......@@ -22,7 +22,7 @@ public class Validation {
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;
static private double sompar,variance_pue,eps=1.E-8,mul=1.E-3,yy,r_tot;
static private double[] ptmp=new double[nparmax+2];
static private double[][] covar=new double[nparmax+1][nparmax+1];
......@@ -405,13 +405,12 @@ public static void valide_modele()
// TODO add fisher test
/****************************************************************************/
r_jk = (1 - (sdc_jk/var_tot)); // Valeur du R2 jackknife. Commentaire 2020
Global.r_jk = (1 - (sdc_jk/var_tot)); // Valeur du R2 jackknife. Commentaire 2020
if(r_tot<0.0) r_tot = 0.0;
if(r_jk<0.0) r_jk = 0.0;
if(Global.r_jk<0.0) Global.r_jk = 0.0;
//System.out.println(" Conventional coefficient of determination R² = " + r_tot);
//System.out.println(" Jackknife coefficient of determination R² = "+r_jk);
//System.out.println(" Jackknife coefficient of determination R² = "+Global.r_jk);
Global.coeff_determination=r_tot/100;
Global.jackknife=r_jk;
for(i=0;i<nbre_par;i++)
{
for(jk=0;jk<nim;jk++) trjk[jk] = 100*jkn[jk][i+1]/par_init[i];//ici
......@@ -503,7 +502,7 @@ public static Object[][] getParamResult(){
data$[nbre_par+2][0]= "Jackknife R²";
else
data$[nbre_par+2][0]= "Jackknife R²**";
data$[nbre_par+2][1]=nf2.format(Global.jackknife);
data$[nbre_par+2][1]= nf2.format(Global.r_jk);
if (Global.Flag_pb_jackknife_Tot != 0) {
data$[nbre_par+4][0] = "*See jackknife graph and";
data$[nbre_par+4][1] = "comment in the current";
......@@ -561,7 +560,7 @@ static private void makePlot(){
++Global.Flag_pb_jackknife_Tot;
System.out.println("Problem in Validation.java Nb years = " + nim + " i = " + i + " Flag_pb_jackknife_Tot = " + Global.Flag_pb_jackknife_Tot + " Nb_years_greater100[i] = " + Nb_years_greater100[i] + " Nb_years_lower100[i] " + Nb_years_lower100[i]);
Global.Flag_pb_jackknife[i] = 1;
Global.message2$ = "\n**Possible problem in Jackknife computation. \nAll years with jackknife value < or > to 100%. \nThis is unexpected except if the length of the \ndataset is limited.\nHence jackknife results are questionable\n" ;
Global.message2$ = "\n**Possible problem in Jackknife computation. \nAll years with jackknife value < or > to 100%. \nThis is unexpected except if the length of the \ndataset is limited.\nHence jackknife results are questionable.\n" ;
}
//else
//System.out.println("No problem in Jackknife computation Nb years = " + nim + " i = " + i + " Nb_years_lower100[i] = " + Nb_years_lower100[i] + " Nb_years_greater100[i] = " + Nb_years_greater100[i]); // Test 2020);
......@@ -602,7 +601,7 @@ static private void makePlot(){
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[23] + " (R2 = " + nf.format(Global.coeff_determination) + "; Corrected R2 = " + nf.format(Global.corrected_R2) + " F test: " + Global.fFsignif$ + "; Jackknife R2 = " + nf.format(Global.jackknife) + ")");
Global.jackknifePlot[nbre_par].setTitreGraphique(Global.titreG[23] + " (R2 = " + nf.format(Global.coeff_determination) + "; Corrected R2 = " + nf.format(Global.corrected_R2) + " F test: " + Global.fFsignif$ + "; Jackknife R2 = " + nf.format(Global.r_jk) + ")");
Global.jackknifePlot[nbre_par].setTitreX(Global.titreSx[21]);
Global.jackknifePlot[nbre_par].setTitreY(Global.titreSy[21]);
......
Do you want to save the reasoning chain in the REASON.DOC file?
Answer YES if you wish to record on the ASCII file REASON.DOC the reasoning
chain of the present trial for further analysis.

\ No newline at end of file
......@@ -19,7 +19,7 @@ But please note that the use of any R² expression is controversed in multiple r
In conclusion there is no way to validate the fit of a surplus production model from statistical results only. We can only recommand to validate the model if:
a) the jackknife graphics show moderate variations around 100% and a fair distribution above and below this value;
b) the p values of t-ratios of the parameters is at least <0.05;
b) the p values of t-ratios of the parameters are at least <0.05 (with a possible exception for the value of the intercept of the function, usually parameter 'a');
c) the the adjusted R² and the jackknife coefficient R² are respectively above 0.65 and 0.60;
d) the p value of F is at least <0.05 (p<0.01 recommended).
......
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