T-Test Calculator
Introductie
De t-test is een fundamenteel statistisch hulpmiddel dat wordt gebruikt om te bepalen of er een significant verschil is tussen de gemiddelden van groepen. Het wordt op grote schaal toegepast in verschillende gebieden zoals psychologie, geneeskunde en bedrijfsleven voor hypothesetests. Deze calculator stelt je in staat om alle soorten t-tests uit te voeren:
- One-Sample T-Test: Test of het gemiddelde van een enkele groep verschilt van een bekende waarde.
- Two-Sample T-Test (Onafhankelijke Steekproeven): Vergelijkt de gemiddelden van twee onafhankelijke groepen.
- Paired T-Test: Vergelijkt gemiddelden van dezelfde groep op verschillende tijdstippen (bijv. voor en na behandeling).
Typen T-Tests
Hoe deze calculator te gebruiken
-
Selecteer het type T-Test:
- One-Sample T-Test
- Two-Sample T-Test
- Paired T-Test
-
Voer de vereiste invoerwaarden in:
-
Voor One-Sample T-Test:
- Steekproef Gemiddelde ()
- Steekproef Standaarddeviatie ()
- Steekproefgrootte ()
- Populatie Gemiddelde ()
-
Voor Two-Sample T-Test:
- Gemiddelde van Steekproef 1 ()
- Standaarddeviatie van Steekproef 1 ()
- Steekproefgrootte van Steekproef 1 ()
- Gemiddelde van Steekproef 2 ()
- Standaarddeviatie van Steekproef 2 ()
- Steekproefgrootte van Steekproef 2 ()
- Variantieveronderstelling: Selecteer of varianten gelijk of ongelijk zijn.
-
Voor Paired T-Test:
- Verschilgegevens: Voer de paargewijze verschillen in.
- Alternatief, voer het Gemiddelde van Verschillen (), Standaarddeviatie van Verschillen (), en Steekproefgrootte () in.
-
-
Stel het significantieniveau () in:
- Veelvoorkomende keuzes zijn 0.05 voor een 95% betrouwbaarheidsniveau of 0.01 voor een 99% betrouwbaarheidsniveau.
-
Kies de testrichting:
- Twee-Tailed Test: Test op elk verschil.
- One-Tailed Test: Test op een directioneel verschil (specificeer of je test op groter of kleiner).
-
Klik op de knop "Bereken":
-
De calculator toont:
- T-Statistiek
- Vrijheidsgraden
- P-Waarde
- Conclusie: Of de nulhypothese moet worden verworpen of niet.
-
Aannames
Voordat je de t-test gebruikt, zorg ervoor dat aan de volgende aannames wordt voldaan:
- Normaliteit: De gegevens moeten ongeveer normaal verdeeld zijn.
- Onafhankelijkheid: Waarnemingen moeten onafhankelijk van elkaar zijn.
- Voor Two-Sample T-Test moeten de twee groepen onafhankelijk zijn.
- Voor Paired T-Test moeten de verschillen onafhankelijk zijn.
- Gelijkheid van Varianten:
- Voor Two-Sample T-Test met Gelijke Varianten moeten de varianten van de twee populaties gelijk zijn (homoscedasticiteit).
- Als aanname niet wordt voldaan, gebruik dan de Welch's T-Test (ongelijke varianten).
Formule
One-Sample T-Test
De t-statistiek wordt als volgt berekend:
- : Steekproefgemiddelde
- : Populatiegemiddelde onder de nulhypothese
- : Steekproefstandaarddeviatie
- : Steekproefgrootte
Two-Sample T-Test (Onafhankelijke Steekproeven)
Gelijke Varianten Aangenomen
Gecombineerde standaarddeviatie ():
Ongelijke Varianten (Welch's T-Test)
Paired T-Test
- : Gemiddelde van de verschillen
- : Standaarddeviatie van de verschillen
- : Aantal paren
Vrijheidsgraden
One-Sample en Paired T-Test:
Two-Sample T-Test met Gelijke Varianten:
Welch's T-Test:
Berekening
De calculator voert de volgende stappen uit:
- Bereken de T-Statistiek met behulp van de juiste formule op basis van de geselecteerde test.
- Bepaal de Vrijheidsgraden (df).
- Bereken de P-Waarde die overeenkomt met de t-statistiek en df:
- Gebruikt de t-verdeling om de waarschijnlijkheid te vinden.
- Vergelijk de P-Waarde met het Significantieniveau ():
- Als , verwerp de nulhypothese.
- Als , verwerp niet de nulhypothese.
- Interpreteer de resultaten:
- Geef een conclusie in de context van de test.
Toepassingen
One-Sample T-Test
- Testen van de effectiviteit van een nieuw medicijn:
- Bepaal of de gemiddelde hersteltijd met een nieuw medicijn verschilt van de bekende gemiddelde hersteltijd.
- Kwaliteitscontrole:
- Controleer of de gemiddelde lengte van geproduceerde onderdelen afwijkt van de gespecificeerde norm.
Two-Sample T-Test
- A/B-testen in marketing:
- Vergelijk conversieratio's tussen twee verschillende webpagina-ontwerpen.
- Onderzoek in het onderwijs:
- Beoordeel of er een verschil is in testresultaten tussen twee onderwijsmethoden.
Paired T-Test
- Voor en Na Studies:
- Evalueer gewichtsverlies voor en na een dieetprogramma.
- Gelijkwaardige Onderwerpen:
- Vergelijk bloeddrukmetingen voor en na het toedienen van medicatie aan dezelfde onderwerpen.
Alternatieven
Hoewel t-tests krachtig zijn, hebben ze aannames die mogelijk niet altijd worden voldaan. Alternatieven zijn onder andere:
- Mann-Whitney U Test:
- Niet-parametrisch alternatief voor de two-sample t-test wanneer gegevens geen normale verdeling volgen.
- Wilcoxon Signed-Rank Test:
- Niet-parametrische equivalent van de paired t-test.
- ANOVA (Analyse van Variantie):
- Gebruikt bij het vergelijken van gemiddelden over meer dan twee groepen.
Geschiedenis
De t-test werd ontwikkeld door William Sealy Gosset in 1908, die publiceerde onder het pseudoniem "Student" terwijl hij werkte bij de Guinness Brewery in Dublin. De test was ontworpen om de kwaliteit van stout te controleren door te bepalen of monsterpartijen consistent waren met de normen van de brouwerij. Vanwege geheimhoudingsovereenkomsten gebruikte Gosset het pseudoniem "Student", wat leidde tot de term "Student's t-test."
In de loop der tijd is de t-test een hoeksteen geworden in statistische analyse, wijdverspreid onderwezen en toegepast in verschillende wetenschappelijke disciplines. Het heeft de weg vrijgemaakt voor de ontwikkeling van complexere statistische methoden en is fundamenteel in het veld van inferentiële statistiek.
Voorbeelden
Hier zijn codevoorbeelden voor het uitvoeren van een One-Sample T-Test in verschillende programmeertalen:
Excel
' One-Sample T-Test in Excel VBA
Sub OneSampleTTest()
Dim sampleData As Range
Set sampleData = Range("A1:A9") ' Vervang door je gegevensbereik
Dim hypothesizedMean As Double
hypothesizedMean = 50 ' Vervang door je veronderstelde gemiddelde
Dim sampleMean As Double
Dim sampleStdDev As Double
Dim sampleSize As Integer
Dim tStat As Double
sampleMean = Application.WorksheetFunction.Average(sampleData)
sampleStdDev = Application.WorksheetFunction.StDev_S(sampleData)
sampleSize = sampleData.Count
tStat = (sampleMean - hypothesizedMean) / (sampleStdDev / Sqr(sampleSize))
MsgBox "T-Statistiek: " & Format(tStat, "0.00")
End Sub
R
## One-Sample T-Test in R
sample_data <- c(51, 49, 52, 48, 50, 47, 53, 49, 51)
t_test_result <- t.test(sample_data, mu = 50)
print(t_test_result)
Python
import numpy as np
from scipy import stats
## One-Sample T-Test in Python
sample_data = [51, 49, 52, 48, 50, 47, 53, 49, 51]
t_statistic, p_value = stats.ttest_1samp(sample_data, 50)
print(f"T-Statistiek: {t_statistic:.2f}, P-Waarde: {p_value:.4f}")
JavaScript
// One-Sample T-Test in JavaScript
function oneSampleTTest(sample, mu0) {
const n = sample.length;
const mean = sample.reduce((a, b) => a + b) / n;
const sd = Math.sqrt(sample.map(x => (x - mean) ** 2).reduce((a, b) => a + b) / (n - 1));
const t = (mean - mu0) / (sd / Math.sqrt(n));
return t;
}
// Voorbeeld gebruik:
const sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
const tStatistic = oneSampleTTest(sampleData, 50);
console.log(`T-Statistiek: ${tStatistic.toFixed(2)}`);
MATLAB
% One-Sample T-Test in MATLAB
sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
[h, p, ci, stats] = ttest(sampleData, 50);
disp(['T-Statistiek: ', num2str(stats.tstat)]);
disp(['P-Waarde: ', num2str(p)]);
Java
import org.apache.commons.math3.stat.inference.TTest;
public class OneSampleTTest {
public static void main(String[] args) {
double[] sampleData = {51, 49, 52, 48, 50, 47, 53, 49, 51};
TTest tTest = new TTest();
double mu = 50;
double tStatistic = tTest.t(mu, sampleData);
double pValue = tTest.tTest(mu, sampleData);
System.out.printf("T-Statistiek: %.2f%n", tStatistic);
System.out.printf("P-Waarde: %.4f%n", pValue);
}
}
C#
using System;
using MathNet.Numerics.Statistics;
class OneSampleTTest
{
static void Main()
{
double[] sampleData = {51, 49, 52, 48, 50, 47, 53, 49, 51};
double mu0 = 50;
int n = sampleData.Length;
double mean = Statistics.Mean(sampleData);
double stdDev = Statistics.StandardDeviation(sampleData);
double tStatistic = (mean - mu0) / (stdDev / Math.Sqrt(n));
Console.WriteLine($"T-Statistiek: {tStatistic:F2}");
}
}
Go
package main
import (
"fmt"
"math"
)
func oneSampleTTest(sample []float64, mu0 float64) float64 {
n := float64(len(sample))
var sum, mean, sd float64
for _, v := range sample {
sum += v
}
mean = sum / n
for _, v := range sample {
sd += math.Pow(v - mean, 2)
}
sd = math.Sqrt(sd / (n - 1))
t := (mean - mu0) / (sd / math.Sqrt(n))
return t
}
func main() {
sampleData := []float64{51, 49, 52, 48, 50, 47, 53, 49, 51}
tStatistic := oneSampleTTest(sampleData, 50)
fmt.Printf("T-Statistiek: %.2f\n", tStatistic)
}
Swift
import Foundation
func oneSampleTTest(sample: [Double], mu0: Double) -> Double {
let n = Double(sample.count)
let mean = sample.reduce(0, +) / n
let sd = sqrt(sample.map { pow($0 - mean, 2) }.reduce(0, +) / (n - 1))
let t = (mean - mu0) / (sd / sqrt(n))
return t
}
let sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51]
let tStatistic = oneSampleTTest(sample: sampleData, mu0: 50)
print(String(format: "T-Statistiek: %.2f", tStatistic))
PHP
<?php
function oneSampleTTest($sample, $mu0) {
$n = count($sample);
$mean = array_sum($sample) / $n;
$sd = sqrt(array_sum(array_map(function($x) use ($mean) {
return pow($x - $mean, 2);
}, $sample)) / ($n - 1));
$t = ($mean - $mu0) / ($sd / sqrt($n));
return $t;
}
$sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
$tStatistic = oneSampleTTest($sampleData, 50);
echo "T-Statistiek: " . number_format($tStatistic, 2);
?>
Ruby
## One-Sample T-Test in Ruby
def one_sample_t_test(sample, mu0)
n = sample.size
mean = sample.sum(0.0) / n
sd = Math.sqrt(sample.map { |x| (x - mean)**2 }.sum / (n - 1))
t = (mean - mu0) / (sd / Math.sqrt(n))
t
end
sample_data = [51, 49, 52, 48, 50, 47, 53, 49, 51]
t_statistic = one_sample_t_test(sample_data, 50)
puts format("T-Statistiek: %.2f", t_statistic)
Rust
// One-Sample T-Test in Rust
fn one_sample_t_test(sample: &Vec<f64>, mu0: f64) -> f64 {
let n = sample.len() as f64;
let mean: f64 = sample.iter().sum::<f64>() / n;
let sd = (sample.iter().map(|x| (x - mean).powi(2)).sum::<f64>() / (n - 1.0)).sqrt();
let t = (mean - mu0) / (sd / n.sqrt());
t
}
fn main() {
let sample_data = vec![51.0, 49.0, 52.0, 48.0, 50.0, 47.0, 53.0, 49.0, 51.0];
let t_statistic = one_sample_t_test(&sample_data, 50.0);
println!("T-Statistiek: {:.2}", t_statistic);
}
Numeriek Voorbeeld
Probleem: Een fabrikant beweert dat de gemiddelde levensduur van een batterij 50 uur is. Een consumentenorganisatie test 9 batterijen en registreert de volgende levensduur (in uren):
Is er bewijs op het 0.05 significantieniveau om te suggereren dat de gemiddelde levensduur van de batterij verschilt van 50 uur?
Oplossing:
-
Stel de Hypotheses op:
- Nulhypothese ():
- Alternatieve Hypothese ():
-
Bereken het Steekproefgemiddelde ():
-
Bereken de Steekproefstandaarddeviatie ():
-
Bereken de T-Statistiek:
-
Vrijheidsgraden:
-
Bepaal de P-Waarde:
- Voor en , is de p-waarde 1.00.
-
Conclusie:
- Aangezien p-waarde (1.00) > (0.05), verwerpen we niet de nulhypothese.
- Interpretatie: Er is niet genoeg bewijs om te suggereren dat de gemiddelde levensduur van de batterij verschilt van 50 uur.
Referenties
- Gosset, W. S. (1908). "The Probable Error of a Mean". Biometrika, 6(1), 1–25. JSTOR.
- Student's t-test. Wikipedia. https://en.wikipedia.org/wiki/Student%27s_t-test
- GraphPad Statistics Guide: Understanding t-tests. Link
- Laerd Statistics: Independent t-test. Link
Aanvullende Bronnen
- Aannames Controleren:
- Gebruik de Shapiro-Wilk Test voor normaliteit.
- Gebruik Levene's Test voor gelijkheid van varianten.
- Softwaretools:
- SPSS, SAS, Stata, en R voor geavanceerde statistische analyse.
- Verder Lezen:
- "Introduction to Statistical Learning" door Gareth James, Daniela Witten, Trevor Hastie, en Robert Tibshirani.
- "Statistical Methods" door George W. Snedecor en William G. Cochran.