Tukey HSD post-hoc
Identifiez les moyennes qui diffèrent après une ANOVA : avec des groupes de moyennes 2, 6 et 4, le test de Tukey signale les trois paires comme différentes au seuil de 0,05. Vous obtenez aussi la valeur critique et le tableau des paires. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Étiquettes
- A, B, C
- Alpha
- 0,05
- K
- 3
- N total
- 12
- Ddl erreur
- 9
- MSE
- 0,6666666667
Lorsqu'une ANOVA à un facteur rejette l'hypothèse nulle globale selon laquelle toutes les moyennes de groupe sont égales, il reste à savoir quelles paires diffèrent. La différence honnêtement significative (HSD) de Tukey et sa variante de Tukey–Kramer pour des effectifs inégaux répondent à cette question avec un seul taux d'erreur par famille : chaque écart de moyennes est comparé à une valeur critique construite à partir du carré moyen résiduel, de la taille des groupes et du quantile de l'étendue studentisée pour le nombre de groupes et les degrés de liberté d'erreur. Cette capacité accepte au moins deux tableaux numériques de groupes, des étiquettes et un alpha facultatifs, puis renvoie les moyennes des groupes, le MSE résiduel, le q critique, la HSD commune quand les effectifs coïncident, et un tableau complet des paires avec des indicateurs de significativité.
Ce que signifie le Tukey HSD après une ANOVA significative
L'analyse de variance teste si au moins une moyenne parmi k groupes diffère, mais elle ne nomme pas les paires. Enchaîner des tests t à deux échantillons sur chaque paire gonfle la probabilité de faux positif à mesure que le nombre de comparaisons augmente.
La procédure de Tukey contrôle le taux d'erreur par famille pour tous les contrastes par paires simultanément grâce à la distribution de l'étendue studentisée : la distance critique dépend de l'ampleur qu'aurait le plus grand écart entre k moyennes sous l'hypothèse nulle, une fois rapporté à l'erreur type résiduelle. Quand chaque groupe a le même effectif n, cette distance s'écrit souvent comme une différence honnêtement significative unique HSD égale q-alpha de k et des degrés de liberté résiduels multiplié par la racine carrée de MSE sur n.
Tout écart absolu de moyennes supérieur à la HSD est déclaré significatif au seuil alpha choisi. Quand les effectifs diffèrent, l'ajustement de Tukey–Kramer remplace le n commun par une erreur type propre à la paire, un sur n-i plus un sur n-j, de sorte que chaque comparaison a sa propre différence critique tout en partageant la même valeur critique q. Les manuels introduisent la HSD juste après l'ANOVA à un facteur en psychologie, biologie, agronomie et dans les tests produit A/B.
Le calcul à la main échoue quand le MSE est mal recopié depuis le tableau de l'ANOVA, quand les df d'erreur sont décalés d'une unité, quand des étiquettes sont interverties, ou quand des effectifs inégaux sont ignorés. Automatiser le chemin des observations brutes jusqu'au MSE et aux indicateurs par paires supprime ces bévues tout en exposant les quantités intermédiaires qu'un corrigé attend.
Où l'utiliser et ce qu'elle coûte
Les usages typiques incluent confirmer quelles moyennes de régime, d'engrais ou de variante d'interface se séparent après une ANOVA à un facteur significative, générer des corrigés qui listent chaque paire à côté de sa différence critique, enseigner la différence entre un test F global et des décisions par paires de la HSD, et alimenter des rapports qui stockent déjà des vecteurs de groupes bruts avec des indicateurs de paires significatives. Le chemin du navigateur s'exécute localement et ne demande aucun compte.
Gardez au moins deux groupes avec assez de réplications intra-groupe pour des df résiduels au moins égaux à un, préférez le mse et les comparaisons calculés par le serveur plutôt que de refaire des chemins en virgule flottante dans des tableurs improvisés, et traitez le résultat comme une étape post-hoc après l'ANOVA plutôt qu'un substitut à la vérification des hypothèses telles que l'indépendance et une variance résiduelle à peu près comparable.
Comme l'algorithme est une arithmétique pure et déterministe, vous pouvez soumettre vos pipelines à des tests de référence sur des tableaux de groupes fixes, sans seuils de Monte-Carlo instables ni bruit dépendant du temps.
Cas d’usage
Corrigés de devoirs et d'examens
Après que les étudiants ont lancé une ANOVA à un facteur, vérifiez quelles paires de groupes dépassent la HSD de Tukey grâce à un tableau par paires canonique et à une valeur HSD.
Expériences de laboratoire et de terrain
Passez des tableaux de réplicats de traitement issus d'essais de biologie ou d'agronomie et stockez les indicateurs de paires significatives à côté du MSE résiduel.
Questions fréquentes
Pourquoi ne pas faire un test t sur chaque paire de groupes ?
Parce que chaque test supplémentaire ajoute un risque de faux positif, et avec beaucoup de paires les erreurs s'accumulent. Le HSD de Tukey compare toutes les paires à la fois en gardant un seul taux d'erreur global.
Peut-on utiliser Tukey quand les groupes n'ont pas la même taille ?
Oui. Avec des tailles inégales, le calculateur passe à la variante Tukey-Kramer, qui donne à chaque paire sa propre différence critique selon la taille des deux groupes, avec la même valeur q critique.
Comment lire le tableau des comparaisons par paires ?
Chaque ligne compare deux groupes. Si l'écart absolu entre leurs moyennes dépasse la différence critique, la paire est marquée significative. Avec des moyennes de 2, 6 et 4, les écarts de 4, 2 et 2 dépassent tous ce seuil.
Quel seuil de signification le test utilise-t-il ?
Il utilise 0,05 sauf si vous en choisissez un autre, par exemple 0,01 ou 0,10. Ce seuil s'applique à l'ensemble des comparaisons, et non à chaque paire séparément.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/stat/tukey-hsd \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"groups":[[1,2,3,2],[5,6,7,6],[3,4,5,4]]}'const res = await fetch("https://api.kit.forhosting.com/stat/tukey-hsd", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"groups": [
[
1,
2,
3,
2
],
[
5,
6,
7,
6
],
[
3,
4,
5,
4
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/tukey-hsd",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"groups": [
[
1,
2,
3,
2
],
[
5,
6,
7,
6
],
[
3,
4,
5,
4
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/tukey-hsd", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"groups":[[1,2,3,2],[5,6,7,6],[3,4,5,4]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"groups":[[1,2,3,2],[5,6,7,6],[3,4,5,4]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/tukey-hsd", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"groups": [
[
1,
2,
3,
2
],
[
5,
6,
7,
6
],
[
3,
4,
5,
4
]
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.tukey_hsd",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Comment cette capacité calcule la réponse
Il calcule la moyenne de chaque groupe et la somme des carrés intra-groupe, agrège la SSE résiduelle en MSE égale SSE sur N moins k, approxime la valeur critique q de l'étendue studentisée pour alpha, k et les df d'erreur, puis forme chaque paire non ordonnée. Pour des effectifs égaux, il indique aussi la valeur HSD unique ; pour des effectifs inégaux, il utilise les différences critiques propres à la paire de Tukey–Kramer. Chaque comparaison liste les deux moyennes, l'écart signé et absolu, les effectifs, l'erreur type à l'échelle de l'étendue, la différence critique, la statistique q observée quand elle est définie, et un indicateur booléen de significativité. La réponse renvoie aussi le nom de la méthode, k, n-total, les df d'erreur, mse, sse, q-crit, equal-sample-sizes, un résumé des groupes avec moyennes et variances d'échantillon, et le nombre de paires significatives. Vous envoyez un corps JSON avec un champ groups obligatoire : soit un tableau d'au moins deux tableaux numériques, soit un objet associant des étiquettes textuelles à des tableaux numériques. Un champ labels facultatif nomme les groupes quand vous passez un simple tableau de tableaux ; un alpha facultatif fixe le seuil par famille et vaut zéro virgule zéro cinq par défaut. Le moteur analyse les nombres finis issus de nombres JSON ou de chaînes numériques simples, rejette moins de deux groupes, les groupes vides, les cellules non numériques, un alpha hors de l'intervalle unité ouvert et les plans dont les degrés de liberté résiduels sont inférieurs à un, le tout avec invalid_input et sans facturation. Aucun aléa, aucune horloge, aucun réseau ; des entrées identiques donnent toujours le même JSON. Le travail est une validation plus un O du nombre total d'observations plus un O de k au carré d'arithmétique par paires, ce qui reste dans le modèle de coût analytique de cette capacité parse de niveau A, facturée $0.002 par requête réussie.
Où l'utiliser et ce qu'elle coûte
Utilisez l'outil gratuit du navigateur pour vérifier un devoir ou faire un post-hoc rapide sur une petite expérience, ou appelez l'API quand un notebook, un carnet de notes, un pipeline de laboratoire ou une tâche d'analytique produit doit résoudre de nombreuses comparaisons multi-groupes de la même façon à chaque fois. L'usage de l'API est prélevé sur le solde KIT prépayé au tarif de base $0.002 par requête réussie ; une validation échouée ne consomme pas de solde.
Cas d'intégration
Analytique produit A/B/n
Traitez par lots des échantillons de métriques multi-variantes via l'API et signalez quelles variantes diffèrent sous un alpha par famille partagé.
Questions techniques
Comment lancer un calculateur Tukey HSD avec cette API ?
Envoyez en POST un JSON avec groups sous forme de tableau de tableaux numériques (ou d'une carte d'étiquettes), avec alpha et labels en option. La réponse inclut mse, q_crit, hsd quand les effectifs coïncident, et un tableau comparisons avec des indicateurs de significativité.
Que se passe-t-il si mes groupes ont des effectifs différents ?
Le moteur utilise la forme de Tukey–Kramer : chaque paire obtient sa propre différence critique à partir du MSE et des deux effectifs, tout en partageant un même q_crit d'étendue studentisée pour k et df_error.
Quelle erreur obtient-on avec moins de deux groupes ?
La validation échoue avec invalid_input indiquant que la HSD de Tukey exige au moins deux groupes. Cet échec n'est pas facturé.
Le calculateur Tukey HSD est-il gratuit ?
Le widget du navigateur est gratuit et s'exécute localement. Les appels API utilisent le solde KIT prépayé au tarif de base $0.002 ; une entrée invalide n'est pas facturée.
Le résultat est-il toujours le même pour les mêmes entrées ?
Oui. L'algorithme est une arithmétique analytique pure, avec une approximation de valeur critique fixe et sans aléa ni horodatage, si bien que des groupes et un alpha identiques produisent un JSON identique.