begin process at 2012 02 15 23:38:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > TESTE DU KHI-DEUX/CHI-DEUX D'INDÉPENDANCE

TESTE DU KHI-DEUX/CHI-DEUX D'INDÉPENDANCE


 Information sur la source

Note :
Aucune note
Catégorie :Application Classé sous :teste chi2, teste khi2, degré liberté, indépendance, contingent Niveau :Débutant Date de création :29/10/2009 Date de mise à jour :14/03/2011 15:37:10 Vu :5 433

Auteur : phpAnonyme

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Définition wikipédia : Le test du khi2 (prononcer « khi-deux » ou « khi carré », qu'on écrit également à l'anglaise « chi-deux » ou « chi carré ») permet, partant d'une hypothèse et d'un risque supposé au départ, de rejeter l'hypothèse si la distance entre deux ensembles d'informations est jugée excessive. Un test d'indépendance porte sur des données qualitatives.
Plus d'infos : http://fr.wikipedia.org/wiki/Test_du_%CF%87%C2%B2


Lien en ligne : http://testchideux.awardspace.info
A ce même lien vous trouverez :
- Une classe PHP 5, plus facile à implanter
- Sinon, vous pourrez toujours faire un teste gratuit

Source

  • <?php
  • $_SESSION['temp'] = serialize(array('colonne'=>$_POST['colonne'], 'ligne'=>$_POST['ligne'], 'dec'=> $_POST['dec']));
  • ?>
  • <?php
  • $temp = unserialize($_SESSION['temp']);
  • $carre = 0;
  • $chi2 = $totaux_contingent = $totaux_theorique = 0;
  • $total_colums_obs = $total_lines_obs = 0;
  • $total_colums_theor = $total_lines_theor = 0;
  • $total_colums_chi = $total_lines_chi = 0;
  • $Save_total_colums_obs = $Save_total_lines_obs = array();
  • $Save_total_colums_theor = $Save_total_lines_theor = array();
  • $Save_total_colums_chi = $Save_total_lines_chi = array();
  • $valeur_theorique = array();
  • $valeur_chi = array();
  • /* Fournit le degré de liberté */
  • $ddl = ($temp['ligne'] - 1)*($temp['colonne'] - 1);
  • /* Attribue directement zéro au élément vide */
  • foreach($_POST['field'] as $key=> $value)
  • {
  • ($value==null) ? $_POST['field'][$key]=0 : $_POST['field'][$key]=(int)$value;
  • }
  • /* Fournit le Total des valeurs observés de chaque lignes */
  • $i=0;
  • foreach($_POST['field'] as $value)
  • {
  • if($i<$temp['ligne'])
  • {
  • $total_lines_obs = $value + $total_lines_obs;
  • $i++;
  • }
  • if($i==$temp['ligne'])
  • {
  • $Save_total_lines_obs[] = $total_lines_obs;
  • $i = $total_lines_obs = 0;
  • }
  • }
  • /* Fournit le Total des valeurs observés de chaque colonnes*/
  • for($j=0; $j<$temp['colonne']; $j++)
  • {
  • $key = $j;
  • for($i=0; $i<$temp['ligne']; $i++)
  • {
  • $total_colums_obs = $_POST['field'][$key] + $total_colums_obs;
  • $key += $temp['colonne'];
  • }
  • $Save_total_colums_obs[] = $total_colums_obs;
  • $total_colums_obs = 0;
  • }
  • /* Fournit le Total des Totaux des valeurs observés */
  • if( array_sum($Save_total_lines_obs) == array_sum($Save_total_colums_obs) )
  • {
  • $totaux_contingent = round(array_sum($Save_total_lines_obs), $temp['dec']);
  • }
  • else
  • {
  • print 'Le Total des totaux par colonnes et par lignes des valeurs observés, semblent ne pas correspondre ! ';
  • exit();
  • }
  • /* Fournit les valeurs théoriques */
  • if($totaux_contingent != 0)
  • {
  • for($j=0; $j<$temp['colonne']; $j++)
  • {
  • for($i=0; $i<$temp['ligne']; $i++)
  • {
  • $valeur_theorique[] = round((($Save_total_lines_obs[$j]*$Save_total_colums_obs[$i])/$totaux_contingent), $temp['dec']);
  • }
  • }
  • }
  • else
  • {
  • print 'Le Total général des valeurs observés est null, la suite des calculs ne peut être effectuer ! ';
  • exit;
  • }
  • /* Fournit le Total des valeurs théoriques de chaque lignes */
  • $i=0;
  • foreach($valeur_theorique as $value)
  • {
  • if($i<$temp['ligne'])
  • {
  • $total_lines_theor = $value + $total_lines_theor;
  • $i++;
  • }
  • if($i==$temp['ligne'])
  • {
  • $Save_total_lines_theor[] = $total_lines_theor;
  • $i = $total_lines_theor = 0;
  • }
  • }
  • /* Fournit le Total des valeurs théoriques de chaque colonnes*/
  • for($j=0; $j<$temp['colonne']; $j++)
  • {
  • $key = $j;
  • for($i=0; $i<$temp['ligne']; $i++)
  • {
  • $total_colums_theor = $valeur_theorique[$key] + $total_colums_theor;
  • $key += $temp['colonne'];
  • }
  • $Save_total_colums_theor[] = $total_colums_theor;
  • $total_colums_theor = 0;
  • }
  • /* Fournit le Total des Totaux des valeurs théoriques */
  • if( array_sum($Save_total_lines_theor) == array_sum($Save_total_colums_theor) )
  • {
  • $totaux_theorique = round(array_sum($Save_total_lines_theor), $temp['dec']);
  • }
  • else
  • {
  • print 'Le Total des totaux par colonnes et par lignes des valeurs théoriques, semblent ne pas correspondre ! ';
  • exit();
  • }
  • /* Fournit les valeurs chis partiels */
  • foreach($_POST['field'] as $key => $value)
  • {
  • if($valeur_theorique[$key]!=0)
  • {
  • $carre = pow(($_POST['field'][$key] - $valeur_theorique[$key]),2)/$valeur_theorique[$key];
  • $valeur_chi[] = round($carre, $temp['dec']);
  • }
  • else
  • {
  • $valeur_chi[] = 0;
  • }
  • }
  • /* Fournit le Total des valeurs chis de chaque lignes */
  • $i=0;
  • foreach($valeur_chi as $value)
  • {
  • if($i<$temp['ligne'])
  • {
  • $total_lines_chi = $value + $total_lines_chi;
  • $i++;
  • }
  • if($i==$temp['ligne'])
  • {
  • $Save_total_lines_chi[] = $total_lines_chi;
  • $i = $total_lines_chi = 0;
  • }
  • }
  • /* Fournit le Total des valeurs chis de chaque colonnes*/
  • for($j=0; $j<$temp['colonne']; $j++)
  • {
  • $key = $j;
  • for($i=0; $i<$temp['ligne']; $i++)
  • {
  • $total_colums_chi = $valeur_chi[$key] + $total_colums_chi;
  • $key += $temp['colonne'];
  • }
  • $Save_total_colums_chi[] = $total_colums_chi;
  • $total_colums_chi = 0;
  • }
  • /* Fournit le Total des Totaux des valeurs chis soit le CHI2 */
  • if( array_sum($Save_total_lines_chi) == array_sum($Save_total_colums_chi) )
  • {
  • $chi2 = round(array_sum($Save_total_lines_chi), $temp['dec']);
  • }
  • else
  • {
  • print 'Le Total des totaux par colonnes et par lignes des valeurs chis, semblent ne pas correspondre ! ';
  • exit();
  • }
  • ?>
<?php
$_SESSION['temp'] = serialize(array('colonne'=>$_POST['colonne'], 'ligne'=>$_POST['ligne'], 'dec'=> $_POST['dec']));
?>


<?php

$temp = unserialize($_SESSION['temp']);

	$carre = 0;
	
	$chi2 = $totaux_contingent = $totaux_theorique  = 0;
	
	$total_colums_obs = $total_lines_obs = 0;
	$total_colums_theor = $total_lines_theor = 0;
	$total_colums_chi = $total_lines_chi = 0;
	
	$Save_total_colums_obs = $Save_total_lines_obs = array();
	$Save_total_colums_theor = $Save_total_lines_theor = array();
	$Save_total_colums_chi = $Save_total_lines_chi = array();
	
	$valeur_theorique = array();
	$valeur_chi = array();
	
/* Fournit le degré de liberté */	
$ddl = ($temp['ligne'] - 1)*($temp['colonne'] - 1); 
	
	
/* Attribue directement zéro au élément vide */	
	foreach($_POST['field'] as $key=> $value)
	{
		($value==null) ? $_POST['field'][$key]=0 : $_POST['field'][$key]=(int)$value;
	}
	

/* Fournit le Total des valeurs observés de chaque lignes */	
	$i=0;
	foreach($_POST['field'] as $value)
	{
		if($i<$temp['ligne'])
		{
			$total_lines_obs = $value + $total_lines_obs;
			$i++;
		}
			if($i==$temp['ligne'])
			{
				$Save_total_lines_obs[] = $total_lines_obs;
				$i = $total_lines_obs = 0;
			}
	}

	
/* Fournit le Total des valeurs observés de chaque colonnes*/	
	for($j=0; $j<$temp['colonne']; $j++)
	{
		$key = $j;
			for($i=0; $i<$temp['ligne']; $i++)
			{
				$total_colums_obs = $_POST['field'][$key] + $total_colums_obs;
				$key += $temp['colonne'];
			}	
		$Save_total_colums_obs[] = $total_colums_obs;
		$total_colums_obs = 0;
	}	
			
	
/* Fournit le Total des Totaux des valeurs observés */	
	if( array_sum($Save_total_lines_obs) == array_sum($Save_total_colums_obs) )
	{	
		$totaux_contingent = round(array_sum($Save_total_lines_obs), $temp['dec']);
	}	
	else
	{
		print 'Le Total des totaux par colonnes et par lignes des valeurs observés, semblent ne pas correspondre ! ';
		exit();
	}	
	
	
/* Fournit les valeurs théoriques */	
	if($totaux_contingent != 0)	
	{	
		for($j=0; $j<$temp['colonne']; $j++)
		{
			for($i=0; $i<$temp['ligne']; $i++)
			{
				$valeur_theorique[] = round((($Save_total_lines_obs[$j]*$Save_total_colums_obs[$i])/$totaux_contingent), $temp['dec']); 
			}
		}
	}
	else
	{ 
		print 'Le Total général des valeurs observés est null, la suite des calculs ne peut être effectuer ! '; 
		exit; 
	}


/* Fournit le Total des valeurs théoriques de chaque lignes */	
	$i=0;
	foreach($valeur_theorique as $value)
	{
		if($i<$temp['ligne'])
		{
			$total_lines_theor = $value + $total_lines_theor;
			$i++;
		}
			if($i==$temp['ligne'])
			{
				$Save_total_lines_theor[] = $total_lines_theor;
				$i = $total_lines_theor = 0;
			}
	}

	
/* Fournit le Total des valeurs théoriques de chaque colonnes*/	
	for($j=0; $j<$temp['colonne']; $j++)
	{
		$key = $j;
			for($i=0; $i<$temp['ligne']; $i++)
			{
				$total_colums_theor = $valeur_theorique[$key] + $total_colums_theor;
				$key += $temp['colonne'];
			}	
		$Save_total_colums_theor[] = $total_colums_theor;
		$total_colums_theor = 0;
	}	
	
	
/* Fournit le Total des Totaux des valeurs théoriques */	
	if( array_sum($Save_total_lines_theor) == array_sum($Save_total_colums_theor) )
	{	
		$totaux_theorique = round(array_sum($Save_total_lines_theor), $temp['dec']);
	}	
	else
	{
		print 'Le Total des totaux par colonnes et par lignes des valeurs théoriques, semblent ne pas correspondre ! ';
		exit();
	}	
	
/* Fournit les valeurs chis partiels */	
	foreach($_POST['field'] as $key => $value)
	{
		if($valeur_theorique[$key]!=0)
		{
			$carre = pow(($_POST['field'][$key] - $valeur_theorique[$key]),2)/$valeur_theorique[$key];
			$valeur_chi[] = round($carre, $temp['dec']);
		}
		else
		{
			$valeur_chi[] = 0;
		}
	}
	
	
/* Fournit le Total des valeurs chis de chaque lignes */	
	$i=0;
	foreach($valeur_chi as $value)
	{
		if($i<$temp['ligne'])
		{
			$total_lines_chi = $value + $total_lines_chi;
			$i++;
		}
			if($i==$temp['ligne'])
			{
				$Save_total_lines_chi[] = $total_lines_chi;
				$i = $total_lines_chi = 0;
			}
	}

	
/* Fournit le Total des valeurs chis de chaque colonnes*/	
	for($j=0; $j<$temp['colonne']; $j++)
	{
		$key = $j;
			for($i=0; $i<$temp['ligne']; $i++)
			{
				$total_colums_chi = $valeur_chi[$key] + $total_colums_chi;
				$key += $temp['colonne'];
			}	
		$Save_total_colums_chi[] = $total_colums_chi;
		$total_colums_chi = 0;
	}	
	
	
/* Fournit le Total des Totaux des valeurs chis soit le CHI2 */	
	if( array_sum($Save_total_lines_chi) == array_sum($Save_total_colums_chi) )
	{	
		$chi2 = round(array_sum($Save_total_lines_chi), $temp['dec']);
	}	
	else
	{
		print 'Le Total des totaux par colonnes et par lignes des valeurs chis, semblent ne pas correspondre ! ';
		exit();
	}	
?>

 Conclusion

Les éléments nécessaires aux calculs du chi2 sont :
- Nombre de ligne du tableau '$_POST['ligne']'
- Nombre de colonne du tableau '$_POST['colonne']'
- Nombre de décimale '$_POST['dec']'
Vous devrez donc les fournir et les serialisés dans une $_SESSION['temp'] ou pas selon vos préférences


Vous aurez le degré de liberté '$ddl' calculer en début de script et le chi2 '$chi2' calculer en fin de script


 Historique

29 octobre 2009 05:35:21 :
Il y avait un bug de traitement lors de l'affichage des résultats.
29 octobre 2009 05:58:48 :
Correction erreur d'une variable
10 janvier 2010 17:09:00 :
Suppression du zip et mise en ligne de la source seule et corriger
14 mars 2011 15:37:10 :
Annonce d'une classe en PHP 5

 Sources du même auteur

CALCULATEUR DE SUREBET POUR PARIS SPORTIF
CLASSE FORM, GESTION DE VALIDATION POUR FORMULAIRE
CRÉATION D'UN SCRIPT D'AUTHENTIFICATION
Source avec Zip [POO] JEU DE KEMO OU DE PENDULE

 Sources de la même categorie

Source avec une capture PHPREPOGENERATOR + REPO (WIN) par alvinp
Source avec Zip IPHONE - ICÔNE D'APPEL TÉLÉPHONIQUE SUR L'ÉCRAN D'ACCUEIL par Rainbow
Source avec Zip Source avec une capture [APP WEB]SERVEUREXPLOREUR par thematrix01
Source avec Zip Source avec une capture MY.BOOKMARKS par inwebo
Source avec Zip M.V.C M.E.D par faceme

Commentaires et avis

Commentaire de froll le 28/07/2010 09:43:35

J'ai l'impression que les données sont entrées grâce au $_POST['field'] mais je ne comprend pas du tout comment tu le parcours...
Normalement ca doit être un tableau à deux dimensions, et tu le parcours avec une seul boucle...je vois pas comment ça marche.

Froll

Commentaire de phpAnonyme le 28/07/2010 17:04:49

"Normalement ca doit être un tableau à deux dimensions, et tu le parcours avec une seul boucle...je vois pas comment ça marche." Ici, non ce n'est pas a deux dimensions... Par contre, comme indiquer dans la desciption :::
Lien en ligne : http://testchideux.awardspace.info
Vous y aussi trouverez la source coder en tableaux multidimensionnels

Commentaire de froll le 03/08/2010 16:12:56

Oui c'est bien ce qui me semblait.
Je rappelle que le chi deux test l'indépendance entre deux variables, donc forcément on utilise un tableau à deux dimensions.

En tout cas merci pour le script, il m'a été fort utile!

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales