IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

Comment calculer la fonction d'intercorrélation ?


Sujet :

Traitement du signal

  1. #1
    Membre du Club Avatar de marguerite99
    Inscrit en
    Mars 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 104
    Points : 52
    Points
    52
    Par défaut Comment calculer la fonction d'intercorrélation ?
    Salut les amis,
    j'ai un exercice qui me demande de calculer la fonction d'intercorrélation dans le cas suivant :
    x(t)=1
    et y(t)=sin(wt)

    en fait les amis mon professeur a corrigé cet exercice et il a trouvé comme résultat 0.
    J'ai pas compris pourquoi il a multiplié par (1/T) la formule d'intercorrélation ?

    Amicalement

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Hum... Soit il a calculé la cross-corrélation "normalisé" (ce qui m'étonnerai quand meme un peu), soit l'intégrale de -oo a +oo de sin(t) vaut zéro (ce qui m'étonnerai quand meme beaucoup).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    salut
    pour le cas discret on multiplie par (1/T)
    tel que N = le nombres total échantillons
    pareille que pour la transformer de fourier discrète la fameuse TFD
    on met le 1/T pour le calcul direct ou l'inverse mais pas pour les deux en même temps
    si tu veux calculé TFD^-1 évite de mettre ce terme de pondération

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 42
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    l'intégrale de -oo a +oo de sin(t) vaut zéro (ce qui m'étonnerai quand meme beaucoup).
    Sin(t) étant une fonction impaire alors l'intégrale de moins l'infini à plus l'infini est égal à zero !

  5. #5
    Membre habitué Avatar de abidineb
    Inscrit en
    Septembre 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 298
    Points : 132
    Points
    132
    Par défaut
    Bonjour
    Sans rentrer dans les détails et calculs de traitement de signal que sont dans la plupart du temps pas necessaire, mais juste réfléchir un peu. la fonction =1 est linéaire parfaite OK. l'autre est un sinus non linéaire parfait, comment veut tu qu'il y aurai la moindre corrélation?

    Cordialement

  6. #6
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Ne suis pas spécialiste des intercorr, mais il me semble que (en se plaçant en t0=0 pour simplifier)

    Cxy(tau)=Cyx(tau), qui est la limite quand x->+infini de 1/x fois l'intégrale sur [0,x] de y(t)*x(t)=sin(wt)*1.

    Cette intégrale vaut (1-cos(wx))/w, et on se ramène à la limite de

    (1-cos(wx))/(wx)

    qui est la limite de cos(wx)/wx en +infini, à savoir ZERO!
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    Ne suis pas spécialiste des intercorr, mais il me semble que (en se plaçant en t0=0 pour simplifier)

    Cxy(tau)=Cyx(tau), qui est la limite quand x->+infini de 1/x fois l'intégrale sur [0,x] de y(t)*x(t)=sin(wt)*1.

    Cette intégrale vaut (1-cos(wx))/w, et on se ramène à la limite de

    (1-cos(wx))/(wx)

    qui est la limite de cos(wx)/wx en +infini, à savoir ZERO!
    Effectivement, si on parle de "covariance" (et pas de correlation croisée) le calcul est bon. On peut meme utiliser la formule

    Cov(f,g) = E(f.g) - E(f).E(g)

    qui nous donne

    Cov(sin(wt),1) = E(sin(wt).1) - E(sin(wt)).E(1) = E(sin(wt))-E(sin(wt)) = 0
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 108
    Points : 97
    Points
    97
    Par défaut Autocorrelation vs intercorrelation
    J'ai commencé une petite incursion du côté de l'autocorrelation d'une variable dans le temps et, à première vue, ça semble marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <math.h>
     
    #define	MAX_STRLEN	 16
    #define MAX_VARS	 32
    #define MAX_OBSERVATIONS 365
     
    typedef struct {
     
    	float data[MAX_VARS];
     
    } observation_t;
     
    int  		nVariables = 0;
    int  		nObservations = 0;
     
    char 		VarNames[MAX_VARS][MAX_STRLEN];
     
    observation_t	Observations[MAX_OBSERVATIONS][MAX_OBSERVATIONS]; 
     
    float mincorrel = 0;
     
    int bSumItems = 0;
     
    float  GetAverage( observation_t *obs, int num, int column )
    {
     
    	int i;
     
    	float val, mean = 0.0f;
     
     
    	for ( i = 0 ; i < num ; i++ )
    	{
     
    		val = obs[ i ].data[column ];
     
    		mean += val;
     
    	}
     
    	if ( i > 0 )
    	{ 
    		mean /= (float)( i );
    	}
     
     
    	return mean;
    }
     
     
    void PrintSamples( int level )
    {
     
    	int i, j;
     
    	float val, sum;
     
    	// printf("Data level %d \n\n", level);
    	printf("\n");
     
    	for( i = 0 ; i < nVariables ; i++ )
    	{
    		printf( "%s\t" , VarNames[i] );
    	}
    	printf("| SUM\n"); 
     
    	for ( i = 0 ; i <= nVariables ; i++ )
    	{
    		printf("========");
    	}
    	printf("\n");
     
    	for( i = 0 ; i < nObservations ; i++ )
    	{
    		printf( "%d\t", (int) Observations[ level ][ i ].data[0] );
     
    		for( j = 1, sum = 0 ; j < nVariables ; j++ )
    		{
    			val = Observations[ level ][ i ].data[ j ] ;
     
    			if ( val >= 0 ) printf( " " );
     
    			printf( "%.2f \t", val );
     
    			sum += val;
    		}
     
    		printf("| %.2f \n", sum );
    	}
     
    	for ( i = 0 ; i <= nVariables ; i++ )
    	{
    		printf("--------");
    	}
    	printf("\n%d\t", nObservations );
    	for ( i = 1 , sum = 0 ; i < nVariables ; i++ )
    	{
    		val = GetAverage( Observations[0] , nObservations, i );
    		if ( val < 0 )
    			printf("%3.2f\t",  val);
    		else
    			printf(" %3.2f\t",  val);
    		sum += val;
    	}
    	printf("| %.2f\n", sum );
    }
     
    int LoadSamples( char *filename )
    {
     
    	int i, dim;
    	int lines, samples = 0;
     
    	FILE *file;
     
    	char buf[80];
     
    	float *pData, sum = 0;
     
     
    	file = fopen( filename, "ro" );
     
    	for ( lines = 0 ; fgets( buf, 256, file ) ; lines++ )
    	{
    		if( lines == 0 )
    		{
    			nVariables = sscanf( buf, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", 
     
    				VarNames[0], VarNames[1], VarNames[2], VarNames[3], 
    				VarNames[4], VarNames[5], VarNames[6], VarNames[7],
    				VarNames[8], VarNames[9], VarNames[10], VarNames[11], 
    				VarNames[12], VarNames[13], VarNames[14], VarNames[15] 	 	
    			);
    		}
    		else
    		{
    			if( buf[0] != '#' )
    			{			
    				pData = (float *) &Observations[0][ nObservations + samples ] ;
     
    				dim = sscanf( buf, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f",
    					&pData[0], &pData[1], &pData[2], &pData[3], 
    					&pData[4], &pData[5], &pData[6], &pData[7],
    					&pData[8], &pData[9], &pData[10], &pData[11], 
    					&pData[12], &pData[13], &pData[14], &pData[15]
    				);
     
    				if( dim > 0 )
    				{
    					samples++;					
    				}
    			}
    		}
    	}
     
    	fclose( file );
     
    	nObservations += samples;
     
    	return samples;
    }
     
     
    float  GetVariance( observation_t *obs, int num, int mean, int column )
    {
     
    	int i;
     
    	float val, var = 0.0f;
     
     
    	for ( i = 0 ; i < num ; i++ )
    	{
     
    		val = ( obs[ i ].data[column ] - mean );
     
    		var += val * val;
     
    	}
     
    	return var ;
    }
     
    float  GetMinMax( observation_t *obs, int num, float *minimum, float *maximum, int column )
    {
     
    	int i;
     
    	float val, min = 1000000, max = -1000000;
     
     
    	for ( i = 0 ; i < num ; i++ )
    	{
     
    		val = obs[ i ].data[column ];
     
    		if ( val < min ) min = val;
    		if ( val > max ) max = val; 
    	}
     
    	*minimum = min;
    	*maximum = max;
    }
     
    float DeleteAverage( observation_t *obs, int num, int avg, int column )
    {
     
    	int i;
     
    	for ( i = 0 ; i < num ; i++ )
    	{
    		obs[ i ].data[ column ] -= avg ;
    	}
     
    	return GetAverage( obs, num, column );
    }
     
     
    void ComputeLevel( int lag )
    {
     
    	int i, j;
     
    	float diff;
     
    	for ( i = 0 ; i < nObservations ; i++ )
    	{
    		Observations[ lag ][ i ].data[ 0 ] = Observations[ lag - 1 ][ i ].data[ 0 ] ; 
    	}
     
    	for( i = lag ; i < nObservations ; i++ )
    	{
    		for( j = 1 ; j < nVariables ; j++ )
    		{
    			diff  = Observations[ lag - 1 ][ i ].data[ j ];
    			diff -= Observations[ lag - 1 ][ i - 1 ].data[ j ];
    			Observations[ lag ][ i ].data[ j ] = diff; 
    		}
    	}
    }
     
    float GetCorrelation( int lag, int column )
    {
    	int t;
     
    	float sum = 0.0f;
     
    	float avg = GetAverage( Observations[0], nObservations, column );
     
    	for( t = 0 ; t < nObservations - lag ; t++ )
    	{
    		sum += ( Observations[0][t].data[column] - avg ) * ( Observations[0][t+lag].data[column] - avg );
    	}
     
     
    	sum   /= ( nObservations - lag ) * sqrt ( GetVariance( Observations[0], nObservations, avg, column ) ) ; 
     
    	return sum ; 
     
    }
     
    float GetCorrelation2( int lag, int column )
    {
    	int t;
     
    	float num = 0.0f;
    	float denum = 0.0f;
     
    	float avg = GetAverage( Observations[0], nObservations, column );
     
    	for( t = 0 ; t < nObservations - lag ; t++ )
    	{
    		num += ( Observations[0][t].data[column] - avg ) * ( Observations[0][t+lag].data[column] - avg );
    	}
     
    	for( t = 0 ; t < nObservations ; t++ )
    	{
    		denum += pow( Observations[0][t].data[column] - avg , 2.0f);
    	}
     
    	num   /= nObservations - lag; 
    	denum /= nObservations - 1;
     
    	return num / denum; 
     
    }
     
    int main( int argc,  char **argv )
    {
     
    	int i, j, k,l;
     
    	float  avg, mean, moy, scale, idx, correl, sum, variance;
    	float  min = 1000.0f, max = -1000.0f;
     
    	printf("\n\nACF v0.1 by Cyclone \n\n");
     
    	for( i = 1 ; i < argc; i++ )
    	{
    		if( argv[i][0] == '-' )
    		{
    			switch( argv[i][1] )
    			{
    				case 'a' : 
    					sscanf( argv[i] + 2,  "%f", &mincorrel );
    					printf("\n\nMinimum correlation set to %f \n", mincorrel); 
    					break;
     
    				case 's' :
    					bSumItems = 1;
    					break;
    			} 
    		}
    		else
    		{
    			(void) LoadSamples( argv[i] );
    		}	
    	}
     
    	PrintSamples(0);
     
    /*	
    	(void) DeleteAverage( Observations[0], nObservations, avg, 1);		
    	printf("\nNew %s centered at %.2f \n", VarNames[ 1 ] , avg );	
    	PrintSamples(0);
    */
    	// printf("Compute lags : \n");
    	for( i = 1 ; i < nObservations /* NUM_LAG */ ; i++ )
    	{
    		// printf("\nCompute the lag %d correlation \n", i);
    		ComputeLevel(i);
    		// PrintSamples(i);
    		// printf(".");
    	}
    	// printf("\n");
     
    	for( j = 1 ; j < nVariables ; j++ )
    	{
    		printf("\n\nACF of the variable %s : ", VarNames[j] );
     
    		avg = GetAverage( Observations[0], nObservations, j );	
    		// printf("\nAverage of %s is %.2f \n\n", VarNames[ j ], avg );
     
    		variance = GetVariance( Observations[0], nObservations, avg, j );
    		// printf("\nVariance of %s is %.2f \n\n", VarNames[ j ],  sqrt(variance / nObservations));	
     
    		GetMinMax( Observations[0], nObservations, &min, &max, j);
     
    		printf("\tmin/avg/var/max = %.2f/%.2f/%.3f/%.2f \n\n", 
    			min, avg, (float)(sqrt(variance)/nObservations), max); 
     
    		for( i = 1 ; i < nObservations ; i++ )
    		{
    			correl = GetCorrelation2( i , j );
     
    			// limit the display to "bigs" autocorrelation's coefs
    			if ( mincorrel < 0.0f )
    			{
    				if ( fabs(correl) < fabs(mincorrel) )	
    					continue;
    			}
    			else
    			{
    				if ( correl < mincorrel )
    					continue;
    			}
     
    			// print the autocorrelation coef at this lag
    			if( correl < 0 )
    				printf("Lag = %3d Correl = %.5f ", i, correl ); 
    			else
    				printf("Lag = %3d Correl =  %.5f ", i, correl ); 
     
    			// display it
    			correl *= 100.0f;
     
    			if( correl < 0 )
    			{
    				correl =  40.0f + correl; 
     
    				for( l = 0 ; l < correl ; l++ )
    				{
    					printf( " " );
    				}
    				for( /* l = idx */ ; l < 40 ; l++ )
    				{
    					printf( "*" );
    				}
    				printf("|\n"); 		
    			}
    			else
    			{
    				for( l = 0 ; l < 40 ; l++ )
    				{
    					printf( " " );
    				}
    				printf( "|");
    				for( l = 0 ; l < correl ; l++ )
    				{
    					printf( "*" );
    				}
    				printf("\n"); 		
    			}
    		} 
    	}
     
    	return 0;
    }
    Maintenant, je voudrais faire de même une petite incursion du côté de l'intercorrelation
    (c'est pour mettre en évidence dans des statistiques les "liens périodiques" qu'il y aurait dans le temps entre deux variables)

    Le problême est que si j'ai réussi à trouver des formules pour l'autocorrelation et à les appliquer dans un programme C, je n'arrive pas à trouver l'équivalent pour l'intercorrelation entre 2 variables


    Les données sont extraites à partir d'un fichier texte relativement simple à parser où la première ligne indique les champs et les lignes suivantes les valeurs, et où chaque champs est séparé du précédent par une tabulation
    (les lignes vides ou commencant par # y sont automatiquement ignorées afin de pouvoir un fichier de données où on peut mettre facilement des commentaires)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Jour	Travail	Trajet	Manger	Boire	Dormir	Laver	Coca	Grec	J	lune	TV	Others
     
    # janvier
     
    1 	8	2	2	1	6	1	1	0	-3	0	2	4
    2 	8	2	2	1	6	0	0	0	-2	1	2	4
    3 	8	2	1	0.5	6	0	0.5	0	-1	2	0	5
    4 	8	2	2	1	6	1	0	0	0	3	2	-1
    5 	8	2	2	1	6	1	1	1	1	2	2	-3
    6 	0	0	3	3	4	1	0	0	2	1	2	8
    7 	0	0	4	2	8	1	2	0	3	0	4	0
    8 	8	2	2	1	6	1	0	0	-3	1	3	3
    9 	8	2	2	1	5	1	1	1	-2	2	2	1
    10 	8	2	2	1	4	1	0	1	-1	3	2	1
    11	8	2	2	1	8	2	1	0	0	2	1	-3
    12 	8	2	2	1	8	1	2	0	1	1	2	-4
    13 	0	0	3	2	4	1	1	0	2	0	3	8
    14 	0	0	4	2	8	1	0	0	3	1	3	2
     
    # mi janvier
     
    15 	8	2	2	1	8	1	1	0	-3	2	2	0
    16	8	2	2	2	8	1	0	1	-2	3	2	-3
    17 	8	2	2	1	8	1	1	2	-1	2	2	-4
    18	8	2	2	1	8	3	0	0	0	1	2	-3
    19 	8	2	2	1	6	1	1	0	1	0	2	0
    20 	0	0	3	3	5	1	0	0	2	1	2	7
    21 	0	0	4	2	8	1	2	1	3	1	4	-2
    22 	8	2	2	1	6	1	0	0	-3	2	2	3
    23	8	2	2	3	7	1	1	1	-2	3	2	-4
    24 	8	2	2	1	8	1	1	0	-1	2	2	-2
    25	8	2	2	1	7	1	1	0	0	1	2	-1
    26 	8	2	2	1	8	1	0	2	1	0	2	-3
    27 	0	0	3	3	5	2	1	0	2	1	4	3
    28	0	0	4	1	8	1	0	1	3	2	1	3
    29	8	2	2	1	8	1	1	0	-3	3	2	-1
    30	8	2	2	1	8	1	0	0	-2	2	1	1
    31	8	2	2	1	8	1	1	1	-1	1	2	-2
    (c'est des données relativement bidons, c'est juste pour y faire des tests )

    Ce qui donne par exemple ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    ./acf weektest.txt -a0.5 
     
     
     
    ACF v0.1 by Cyclone 
     
     
     
    Minimum correlation set to 0.500000 
     
    Jour	Travail	Trajet	Manger	Boire	Dormir	Laver	Coca	Grec	J	lune	TV	Others	| SUM
    ================================================================================================================
    1	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 1.00 	 1.00 	 0.00 	-3.00 	 0.00 	 2.00 	 4.00 	| 24.00 
    2	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 0.00 	 0.00 	 0.00 	-2.00 	 1.00 	 2.00 	 4.00 	| 24.00 
    3	 8.00 	 2.00 	 1.00 	 0.50 	 6.00 	 0.00 	 0.50 	 0.00 	-1.00 	 2.00 	 0.00 	 5.00 	| 24.00 
    4	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 1.00 	 0.00 	 0.00 	 0.00 	 3.00 	 2.00 	-1.00 	| 24.00 
    5	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 1.00 	 1.00 	 1.00 	 1.00 	 2.00 	 2.00 	-3.00 	| 24.00 
    6	 0.00 	 0.00 	 3.00 	 3.00 	 4.00 	 1.00 	 0.00 	 0.00 	 2.00 	 1.00 	 2.00 	 8.00 	| 24.00 
    7	 0.00 	 0.00 	 4.00 	 2.00 	 8.00 	 1.00 	 2.00 	 0.00 	 3.00 	 0.00 	 4.00 	 0.00 	| 24.00 
    8	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 1.00 	 0.00 	 0.00 	-3.00 	 1.00 	 3.00 	 3.00 	| 24.00 
    9	 8.00 	 2.00 	 2.00 	 1.00 	 5.00 	 1.00 	 1.00 	 1.00 	-2.00 	 2.00 	 2.00 	 1.00 	| 24.00 
    10	 8.00 	 2.00 	 2.00 	 1.00 	 4.00 	 1.00 	 0.00 	 1.00 	-1.00 	 3.00 	 2.00 	 1.00 	| 24.00 
    11	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 2.00 	 1.00 	 0.00 	 0.00 	 2.00 	 1.00 	-3.00 	| 24.00 
    12	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 2.00 	 0.00 	 1.00 	 1.00 	 2.00 	-4.00 	| 24.00 
    13	 0.00 	 0.00 	 3.00 	 2.00 	 4.00 	 1.00 	 1.00 	 0.00 	 2.00 	 0.00 	 3.00 	 8.00 	| 24.00 
    14	 0.00 	 0.00 	 4.00 	 2.00 	 8.00 	 1.00 	 0.00 	 0.00 	 3.00 	 1.00 	 3.00 	 2.00 	| 24.00 
    15	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 1.00 	 0.00 	-3.00 	 2.00 	 2.00 	 0.00 	| 24.00 
    16	 8.00 	 2.00 	 2.00 	 2.00 	 8.00 	 1.00 	 0.00 	 1.00 	-2.00 	 3.00 	 2.00 	-3.00 	| 24.00 
    17	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 1.00 	 2.00 	-1.00 	 2.00 	 2.00 	-4.00 	| 24.00 
    18	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 3.00 	 0.00 	 0.00 	 0.00 	 1.00 	 2.00 	-3.00 	| 24.00 
    19	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 1.00 	 1.00 	 0.00 	 1.00 	 0.00 	 2.00 	 0.00 	| 24.00 
    20	 0.00 	 0.00 	 3.00 	 3.00 	 5.00 	 1.00 	 0.00 	 0.00 	 2.00 	 1.00 	 2.00 	 7.00 	| 24.00 
    21	 0.00 	 0.00 	 4.00 	 2.00 	 8.00 	 1.00 	 2.00 	 1.00 	 3.00 	 1.00 	 4.00 	-2.00 	| 24.00 
    22	 8.00 	 2.00 	 2.00 	 1.00 	 6.00 	 1.00 	 0.00 	 0.00 	-3.00 	 2.00 	 2.00 	 3.00 	| 24.00 
    23	 8.00 	 2.00 	 2.00 	 3.00 	 7.00 	 1.00 	 1.00 	 1.00 	-2.00 	 3.00 	 2.00 	-4.00 	| 24.00 
    24	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 1.00 	 0.00 	-1.00 	 2.00 	 2.00 	-2.00 	| 24.00 
    25	 8.00 	 2.00 	 2.00 	 1.00 	 7.00 	 1.00 	 1.00 	 0.00 	 0.00 	 1.00 	 2.00 	-1.00 	| 24.00 
    26	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 0.00 	 2.00 	 1.00 	 0.00 	 2.00 	-3.00 	| 24.00 
    27	 0.00 	 0.00 	 3.00 	 3.00 	 5.00 	 2.00 	 1.00 	 0.00 	 2.00 	 1.00 	 4.00 	 3.00 	| 24.00 
    28	 0.00 	 0.00 	 4.00 	 1.00 	 8.00 	 1.00 	 0.00 	 1.00 	 3.00 	 2.00 	 1.00 	 3.00 	| 24.00 
    29	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 1.00 	 0.00 	-3.00 	 3.00 	 2.00 	-1.00 	| 24.00 
    30	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 0.00 	 0.00 	-2.00 	 2.00 	 1.00 	 1.00 	| 24.00 
    31	 8.00 	 2.00 	 2.00 	 1.00 	 8.00 	 1.00 	 1.00 	 1.00 	-1.00 	 1.00 	 2.00 	-2.00 	| 24.00 
    ----------------------------------------------------------------------------------------------------------------
    31	 5.94	 1.48	 2.35	 1.40	 6.74	 1.06	 0.66	 0.39	-0.19	 1.48	 2.13	 0.55	| 24.00
     
     
    ACF of the variable Travail : 	min/avg/var/max = 0.00/5.94/0.651/8.00 
     
    Lag =   7 Correl =  0.94802                                         |***********************************************************************************************
    Lag =  14 Correl =  0.91205                                         |********************************************************************************************
    Lag =  21 Correl =  0.82574                                         |***********************************************************************************
     
     
    ACF of the variable Trajet : 	min/avg/var/max = 0.00/1.48/0.180/2.00 
     
    Lag =   7 Correl =  0.94802                                         |***********************************************************************************************
    Lag =  14 Correl =  0.91205                                         |********************************************************************************************
    Lag =  21 Correl =  0.82574                                         |***********************************************************************************
     
     
    ACF of the variable Manger : 	min/avg/var/max = 1.00/2.35/0.148/4.00 
     
    Lag =   7 Correl =  0.87660                                         |****************************************************************************************
    Lag =  14 Correl =  0.85024                                         |**************************************************************************************
    Lag =  21 Correl =  0.78697                                         |*******************************************************************************
     
     
    ACF of the variable Boire : 	min/avg/var/max = 0.50/1.40/0.149/3.00 
     
    Lag =   7 Correl =  0.58885                                         |***********************************************************
    Lag =  21 Correl =  0.55614                                         |********************************************************
     
     
    ACF of the variable Dormir : 	min/avg/var/max = 4.00/6.74/0.283/8.00 
     
     
     
    ACF of the variable Laver : 	min/avg/var/max = 0.00/1.06/0.091/3.00 
     
     
     
    ACF of the variable Coca : 	min/avg/var/max = 0.00/0.66/0.165/2.00 
     
    Lag =  12 Correl =  0.69748                                         |**********************************************************************
    Lag =  14 Correl =  0.56376                                         |*********************************************************
    Lag =  20 Correl =  0.58476                                         |***********************************************************
    Lag =  24 Correl =  0.65506                                         |******************************************************************
     
     
    ACF of the variable Grec : 	min/avg/var/max = 0.00/0.39/0.129/2.00 
     
     
     
    ACF of the variable J : 	min/avg/var/max = -3.00/-0.19/0.362/3.00 
     
    Lag =   7 Correl =  0.96701                                         |*************************************************************************************************
    Lag =  14 Correl =  0.96568                                         |*************************************************************************************************
    Lag =  21 Correl =  0.96249                                         |*************************************************************************************************
    Lag =  28 Correl =  0.94440                                         |***********************************************************************************************
    Lag =  29 Correl =  0.78420                                         |*******************************************************************************
    Lag =  30 Correl =  0.54389                                         |*******************************************************
     
     
    ACF of the variable lune : 	min/avg/var/max = 0.00/1.48/0.191/3.00 
     
    Lag =   6 Correl =  0.83226                                         |************************************************************************************
    Lag =   7 Correl =  0.56423                                         |*********************************************************
    Lag =  12 Correl =  0.69566                                         |**********************************************************************
    Lag =  13 Correl =  0.72218                                         |*************************************************************************
    Lag =  18 Correl =  0.55909                                         |********************************************************
    Lag =  19 Correl =  0.85784                                         |**************************************************************************************
    Lag =  25 Correl =  0.99156                                         |****************************************************************************************************
    Lag =  30 Correl =  0.77644                                         |******************************************************************************
     
     
    ACF of the variable TV : 	min/avg/var/max = 0.00/2.13/0.151/4.00 
     
    Lag =  25 Correl =  0.54877                                         |*******************************************************
    Lag =  27 Correl =  0.90163                                         |*******************************************************************************************
     
     
    ACF of the variable Others : 	min/avg/var/max = -4.00/0.55/0.633/8.00 
     
    Lag =   7 Correl =  0.62186                                         |***************************************************************
    => Ca donne généralement de très fortes autocorrelations pour des distances de 7 jours, 14 jours et 21 jours, ce qui semble logique vu qu'une semaine ressemble beaucoup à la suivante (ou la précédente)

    Mais ce que je voudrais trouver , ce serait une fonction qui se raprocherait de GetCorrelation2(int lag, int colum) mais qui me permettrait d'avoir l'intercorrelation entre 2 champs plutôt que l'autocorrelation sur 1 seul champs, soit un truc du style GetInterCorrelation(int lag, int colum1, int colum2)

    Mais tout ce que j'ai réussi à trouver pour l'instant sont des formules utilisant le complexe conjugé
    (soit le nombre complexe dont la partie imaginaire est le négatif du nombre complexe dont on veut le conjugé, par exemple le complexe conjugué du nombre complexe "2 + 3i" est "2 - 3i" )
    => alors que ce je voudrais serait plutôt qqchose dans le domaine du réel, pas de l'imaginaire

  9. #9
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    J'ai trouvé

    L'intercorrelation entre deux variables x et y se calcule de la même façon que l'on calcule l'autocorrelation d'un signal x avec lui-même
    => il suffit donc tout simplement de remplacer x(n)*x(n+k) par x(n)*y(n+k)

    Le pire, c'est qu'une fois qu'on le sait, ça parait hyper logique

  10. #10
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Ark, ça ne marche pô

    J'utilise cette fonction pour calculer l'intercorrelation entre 2 variables (dont les valeurs de la première sont stockées dans la colonne colum1 et la seconde dans la colonne colum2) pour une distance donnée (lag):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    float GetInterCorrelation( int lag, int column1, int column2 )
    {
    	int t;
     
    	float num = 0.0f;
    	float denum = 0.0f;
     
     
    	float avg1 = GetAverage( Observations[0], nObservations, column1 );
    	float avg2 = GetAverage( Observations[0], nObservations, column2 );
     
    	for( t = 0 ; t < nObservations - lag ; t++ )
    	{
    		num += ( Observations[0][t].data[column1] - avg1 ) * ( Observations[0][t+lag].data[column2] - avg2 );
    	}
     
    	for( t = 0 ; t < nObservations ; t++ )
    	{
    		denum += (Observations[0][t].data[column1] - avg1) * (Observations[0][t].data[column2] - avg2); 
     
    	}
     
    	num   /= nObservations - lag; 
    	denum /= nObservations - 1;
     
    	return num / denum; 
     
    }
    => comment peut-on faire pour normaliser les résultats de l'intercorrelation entre -1 et 1 ???

    Avec l'autocorrelation, je divisait par la "somme des carrés de l'écart entre chaque valeur et la moyenne" et ça semblait bien pourtant bien marcher ...

    => j'ai essayé avec la "somme des multiplications de l'écart entre chaque valeur de la première variable avec sa moyenne et l'écart entre chaque valeur de la seconde variable avec sa moyenne" mais ça ne marche pas
    (cf. vu que x au carré = x * x , j'avais espéré que ça puisse marcher pareil avec x * y à la place de x *x , mais non ....)

    Le but étant de ne pas avoir à se coltiner tout un tas de calcul formel pour déterminer les intégrales de formules "toutes biscornues" à base de sinus, cosinus et autres en utilisant tout simplement un tableau où sont stockées les valeurs de ces formules pour un ensemble de "pas" (un lag étant un cumul de ces pas)
    (cf. avoir un truc générique où il n'y a pas besoin de tout un tas de calculs savants afin de calculer des intégrales sur des formules relativement complexes, voir même impossible à poser comme le prix de la carotte ou du choux-fleur au jour le jour et autres style de valeurs semi-aléatoires comme les valeurs côtées à la Bourse ou la puissance moyenne des éclairs sur chaque jour durant l'été 2007 sur la région Charente-Poitou par exemple)
    Fichiers attachés Fichiers attachés

  11. #11
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Avril 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2011
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Ca commence enfin à donner des résultats qui deviennent de plus en plus sensés

    Soit des trucs du style :

    * une semaine de travail ressemble à une autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Intercorrelation between variables Travail and Travail : 
     
    	min/avg/var/max of Travail = 0.00/5.94/0.651/8.00 
     
    	min/avg/var/max of Travail = 0.00/5.94/0.651/8.00 
     
    Lag =   7 Correl =  0.94802                                                   |************************************************
    Lag =  14 Correl =  0.91205                                                   |**********************************************
    Lag =  21 Correl =  0.82574                                                   |******************************************
     
    		The best lag between Travail and Travail is 7 with an intercorrelation of 0.94802
    (ça semble réaliste pour un travail de 5 jours par semaine avec 2 jours de repos chaque semaine)

    * le temps passé en trajet est fortement correlé avec le travail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Intercorrelation between variables Travail and Trajet : 
     
    	min/avg/var/max of Travail = 0.00/5.94/0.651/8.00 
     
    	min/avg/var/max of Trajet = 0.00/1.48/0.180/2.00 
     
    Lag =   7 Correl =  0.94802                                                   |************************************************
    Lag =  14 Correl =  0.91205                                                   |**********************************************
    Lag =  21 Correl =  0.82574                                                   |******************************************
     
    		The best lag between Travail and Trajet is 7 with an intercorrelation of 0.94802
    (je n'ai mis que les temps de trajet maison <-> boulot, donc là aussi c'est réaliste)

    * il n'y a pas de correlation entre le temps de trajet effectué chaque jour (ou le temps de travail chaque jour) et ce qui est mangé ou bu chaque jour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Intercorrelation between variables Trajet and Manger : 
     
    	min/avg/var/max of Trajet = 0.00/1.48/0.180/2.00 
     
    	min/avg/var/max of Manger = 1.00/2.35/0.148/4.00 
     
     
    		Any intercorrelation found between Trajet and Manger
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Intercorrelation between variables Trajet and Manger : 
     
    	min/avg/var/max of Trajet = 0.00/1.48/0.180/2.00 
     
    	min/avg/var/max of Manger = 1.00/2.35/0.148/4.00 
     
     
    		Any intercorrelation found between Trajet and Manger
    ...
    (normal, on mange et on boit tous les jours quel que soit le jour de la semaine et on prend souvent plus de temps pour manger le week-end alors qu'on ne doit faire le trajet aller-retour au boulot pendant ce week-end vu qu'on n'y travaille pas)

    Mais par contre, ça donne de bien trop fortes corrélations (plus grandes que 1 => lapatoucompri) pour des trucs qui ne semblent pas avoir vraiment de rapports entre eux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ntercorrelation between variables Manger and Laver : 
     
    	min/avg/var/max of Manger = 1.00/2.35/0.148/4.00 
     
    	min/avg/var/max of Laver = 0.00/1.06/0.091/3.00 
     
    Lag =   4 Correl =  1.15917                                                   |**********************************************************
    Lag =  11 Correl =  1.01869                                                   |***************************************************
    Lag =  20 Correl =  1.08924                                                   |*******************************************************
    Lag =  21 Correl =  0.50494                                                   |**************************
     
    		The best lag between Manger and Laver is 4 with an intercorrelation of 1.15917
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Intercorrelation between variables Manger and lune : 
     
    	min/avg/var/max of Manger = 1.00/2.35/0.148/4.00 
     
    	min/avg/var/max of lune = 0.00/1.48/0.191/3.00 
     
    Lag =   2 Correl =  0.65229                                                   |*********************************
    Lag =   3 Correl =  0.61412                                                   |*******************************
    Lag =   9 Correl =  0.92390                                                   |***********************************************
    Lag =  10 Correl =  0.62060                                                   |********************************
    Lag =  15 Correl =  0.54435                                                   |****************************
    Lag =  16 Correl =  1.07753                                                   |******************************************************
    Lag =  22 Correl =  0.80721                                                   |*****************************************
    Lag =  23 Correl =  1.04978                                                   |*****************************************************
     
    		The best lag between Manger and lune is 16 with an intercorrelation of 1.07753
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Intercorrelation between variables Laver and Travail : 
     
    	min/avg/var/max of Laver = 0.00/1.06/0.091/3.00 
     
    	min/avg/var/max of Travail = 0.00/5.94/0.651/8.00 
     
    Lag =   4 Correl =  1.08874                                                   |*******************************************************
    Lag =   5 Correl =  0.58717                                                   |******************************
    Lag =  11 Correl =  1.31583                                                   |******************************************************************
    Lag =  12 Correl =  0.79602                                                   |****************************************
    Lag =  18 Correl =  1.56154                                                   |*******************************************************************************
    Lag =  19 Correl =  0.75898                                                   |**************************************
    Lag =  24 Correl =  0.80706                                                   |*****************************************
    Lag =  25 Correl =  2.87011                                                   |************************************************************************************************************************************************
    Lag =  26 Correl =  1.20568                                                   |*************************************************************
     
    		The best lag between Laver and Travail is 25 with an intercorrelation of 2.87011
    ...
    (il y en plein d'autres du style )


    J'ai aussi fait des tests à partir d'un autre fichier de config où j'y ai utilisé des variables X, Y, Z, W qui sont des suites "décalées dans le temps", deux variables W et Wdecs qui se ressemble pas mal en décalé et enfin un dernier champs avec des valeurs aléatoires générés par la formule rand() / 1000000.0f

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    t	X	Y	Z	W	Wdec	rnd	| SUM
    ================================================================
    0	 0.00 	 0.00 	 0.00 	 1.00 	 2.00 	 1804.29 	| 1807.29 
    1	 1.00 	 0.00 	 0.00 	 2.00 	 1.00 	 846.93 	| 850.93 
    2	 2.00 	 1.00 	 0.00 	 1.00 	 2.00 	 1681.69 	| 1687.69 
    3	 3.00 	 2.00 	 1.00 	 2.00 	 1.00 	 1714.67 	| 1723.67 
    4	 4.00 	 3.00 	 2.00 	 1.00 	 2.00 	 1957.75 	| 1969.75 
    5	 5.00 	 4.00 	 3.00 	 2.00 	 1.00 	 424.24 	| 439.24 
    6	 6.00 	 5.00 	 4.00 	 1.00 	 2.00 	 719.89 	| 737.89 
    7	 7.00 	 6.00 	 5.00 	 2.00 	 1.00 	 1649.76 	| 1670.76 
    8	 8.00 	 7.00 	 6.00 	 1.00 	 2.00 	 596.52 	| 620.52 
    9	 9.00 	 8.00 	 7.00 	 2.00 	 1.00 	 1189.64 	| 1216.64 
    10	 10.00 	 9.00 	 8.00 	 1.00 	 2.00 	 1025.20 	| 1055.20 
    ----------------------------------------------------------------
    AVG(11)	 5.00	 4.09	 3.27	 1.45	 1.55	 1237.33	| 1252.69 (13779.58 / 11 = 1252.69)
    Et là, les valeurs d'intercorrélation qui me sont renvoyées me semblent vraiment aberrantes car j'y trouve des trucs du ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Intercorrelation between variables rnd and rnd : 
     
    	min/avg/var/max of rnd = 424.24/1237.33/156.803/1957.75 
     
    	min/avg/var/max of rnd = 424.24/1237.33/156.803/1957.75 
     
    Lag =   1 Correl = -0.14820                                            *******|
    Lag =   2 Correl = -0.09811                                               ****|
    Lag =   3 Correl =  0.05732                                                   |***
    Lag =   4 Correl =  0.18233                                                   |**********
    Lag =   5 Correl = -0.13640                                             ******|
    Lag =   6 Correl = -0.61493                     ******************************|
    Lag =   7 Correl =  0.30383                                                   |****************
    Lag =   8 Correl = -0.49182                           ************************|
    Lag =   9 Correl =  0.09374                                                   |*****
     
    		The best lag between rnd and rnd is 7 with an intercorrelation of 0.30383
    => comment peut-il y avoir la moindre corrélation entre des suites de nombres aléatoires ???
    (vu que justement, une des propriétés des suites aléatoires est de ne pas comporter en son sein de suites de valeurs plus ou moins proches et cycliques ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Intercorrelation between variables Y and rnd : 
     
    	min/avg/var/max of Y = 0.00/4.09/0.914/9.00 
     
    	min/avg/var/max of rnd = 424.24/1237.33/156.803/1957.75 
     
    Lag =   1 Correl = -0.35528                                  *****************|
    Lag =   2 Correl = -0.48909                           ************************|
    Lag =   3 Correl = -0.23319                                        ***********|
    Lag =   4 Correl =  0.20211                                                   |***********
    Lag =   5 Correl =  0.80878                                                   |*****************************************
    Lag =   6 Correl =  0.47686                                                   |************************
    Lag =   7 Correl =  0.33163                                                   |*****************
    Lag =   8 Correl =  1.00665                                                   |***************************************************
    Lag =   9 Correl =  0.46221                                                   |************************
     
    		The best lag between Y and rnd is 8 with an intercorrelation of 1.00665
    => comment qqchose peut être **très fortement** (et en plus avec un coefficient de corrélation supérieur à 1 ...) avec une suite de nombre aléatoires ???

    Je joins les sources et les fichiers de config utilisés, ainsi que le résultat de quelques executions, au cas où ça pourrait donner la puce à l'oreille ou interesser quelqu'un ...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Comment calculer la dérivée d'une image en fonction de temps
    Par codesource1 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 07/04/2015, 20h39
  2. Comment calculer la taille d'une base de données ?
    Par say dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 01/04/2011, 16h48
  3. Comment calculer le temps d'exécution d'une fonction
    Par gege2061 dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 16h19
  4. comment appliquer un calcul en fonction du tableau ?
    Par toshiro92 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 15/11/2007, 18h10
  5. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo