Whiz Tools

T-Test Beregner

sampleDataDescription

T-Test Beregner

Introduktion

t-testen er et grundlæggende statistisk værktøj, der bruges til at bestemme, om der er en signifikant forskel mellem gennemsnittene af grupper. Det anvendes bredt inden for forskellige områder som psykologi, medicin og erhvervsliv til hypotesetestning. Denne beregner giver dig mulighed for at udføre alle slags t-tests:

  • One-Sample T-Test: Tester, om gennemsnittet af en enkelt gruppe adskiller sig fra en kendt værdi.
  • Two-Sample T-Test (Uafhængige Prøver): Sammenligner gennemsnittene af to uafhængige grupper.
  • Paired T-Test: Sammenligner gennemsnit fra den samme gruppe på forskellige tidspunkter (f.eks. før og efter behandling).

Typer af T-Tests

Prøve Data Population Gennemsnit One-Sample T-Test Prøve 1 Prøve 2 Gennemsnitsforskel Two-Sample T-Test Før Efter Forskelle Paired T-Test

Sådan Bruger Du Denne Beregner

  1. Vælg Typen af T-Test:

    • One-Sample T-Test
    • Two-Sample T-Test
    • Paired T-Test
  2. Indtast de Nødvendige Input:

    • For One-Sample T-Test:

      • Prøve Gennemsnit (xˉ\bar{x})
      • Prøve Standardafvigelse (ss)
      • Prøve Størrelse (nn)
      • Population Gennemsnit (μ0\mu_0)
    • For Two-Sample T-Test:

      • Gennemsnit af Prøve 1 (xˉ1\bar{x}_1)
      • Standardafvigelse af Prøve 1 (s1s_1)
      • Prøve Størrelse af Prøve 1 (n1n_1)
      • Gennemsnit af Prøve 2 (xˉ2\bar{x}_2)
      • Standardafvigelse af Prøve 2 (s2s_2)
      • Prøve Størrelse af Prøve 2 (n2n_2)
      • Varians Antagelse: Vælg om variansen antages at være lig med eller ulige.
    • For Paired T-Test:

      • Forskelle Data: Indtast de parvise forskelle.
      • Alternativt, indtast Gennemsnit af Forskelle (dˉ\bar{d}), Standardafvigelse af Forskelle (sds_d), og Prøve Størrelse (nn).
  3. Sæt Signifikansniveauet (α\alpha):

    • Almindelige valg er 0.05 for et 95% konfidensniveau eller 0.01 for et 99% konfidensniveau.
  4. Vælg Test Retning:

    • To-Tailed Test: Tester for enhver forskel.
    • One-Tailed Test: Tester for en retning forskel (specificer om testen er for større end eller mindre end).
  5. Klik på "Beregne" Knappen:

    • Beregneren vil vise:

      • T-Statistik
      • Frihedsgrader
      • P-Værdi
      • Konklusion: Om at afvise eller ikke afvise nulhypotesen.

Antagelser

Før du bruger t-testen, skal du sikre dig, at følgende antagelser er opfyldt:

  • Normalitet: Dataene skal være tilnærmelsesvis normalt fordelt.
  • Uafhængighed: Observationer skal være uafhængige af hinanden.
    • For Two-Sample T-Test skal de to grupper være uafhængige.
    • For Paired T-Test skal forskellene være uafhængige.
  • Lighed af Varians:
    • For Two-Sample T-Test med Lige Varians, skal variansen af de to populationer være lig med (homoskedasticitet).
    • Hvis denne antagelse ikke er opfyldt, skal du bruge Welch's T-Test (ulige varians).

Formler

One-Sample T-Test

T-statistikken beregnes som:

t=xˉμ0snt = \frac{\bar{x} - \mu_0}{\frac{s}{\sqrt{n}}}
  • xˉ\bar{x}: Prøve gennemsnit
  • μ0\mu_0: Population gennemsnit under nulhypotesen
  • ss: Prøve standardafvigelse
  • nn: Prøve størrelse

Two-Sample T-Test (Uafhængige Prøver)

Lige Varians Antaget
t=xˉ1xˉ2sp1n1+1n2t = \frac{\bar{x}_1 - \bar{x}_2}{s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}}

Pooled standardafvigelse (sps_p):

sp=(n11)s12+(n21)s22n1+n22s_p = \sqrt{\frac{(n_1 - 1)s_1^2 + (n_2 - 1)s_2^2}{n_1 + n_2 - 2}}
Ulige Varians (Welch's T-Test)
t=xˉ1xˉ2s12n1+s22n2t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}

Paired T-Test

t=dˉsdnt = \frac{\bar{d}}{\frac{s_d}{\sqrt{n}}}
  • dˉ\bar{d}: Gennemsnit af forskellene
  • sds_d: Standardafvigelse af forskellene
  • nn: Antal par

Frihedsgrader

One-Sample og Paired T-Test:
df=n1df = n - 1
Two-Sample T-Test med Lige Varians:
df=n1+n22df = n_1 + n_2 - 2
Welch's T-Test:
df=(s12n1+s22n2)2(s12n1)2n11+(s22n2)2n21df = \frac{\left( \frac{s_1^2}{n_1} + \frac{s_2^2}{n_2} \right)^2}{\frac{\left( \frac{s_1^2}{n_1} \right)^2}{n_1 -1} + \frac{\left( \frac{s_2^2}{n_2} \right)^2}{n_2 -1}}

Beregning

Beregneren udfører følgende trin:

  1. Beregn T-Statistik ved hjælp af den relevante formel baseret på den valgte test.
  2. Bestem Frihedsgrader (df).
  3. Beregn P-Værdi svarende til t-statistikken og df:
    • Bruger t-fordelingen til at finde sandsynligheden.
  4. Sammenlign P-Værdi med Signifikansniveauet (α\alpha):
    • Hvis pαp \leq \alpha, afvis nulhypotesen.
    • Hvis p>αp > \alpha, undlad at afvise nulhypotesen.
  5. Fortolk Resultaterne:
    • Giv en konklusion i konteksten af testen.

Anvendelsesområder

One-Sample T-Test

  • Test af Ny Lægemiddel Effektivitet:
    • Bestem om den gennemsnitlige restitutionstid med et nyt lægemiddel adskiller sig fra den kendte gennemsnitlige restitutionstid.
  • Kvalitetskontrol:
    • Tjek om den gennemsnitlige længde af fremstillede dele afviger fra den specificerede standard.

Two-Sample T-Test

  • A/B Testning i Markedsføring:
    • Sammenlign konverteringsrater mellem to forskellige webside design.
  • Uddannelsesforskning:
    • Vurdere om der er en forskel i testresultater mellem to undervisningsmetoder.

Paired T-Test

  • Før og Efter Studier:
    • Vurder vægttab før og efter et diætprogram.
  • Matchede Emner:
    • Sammenlign blodtryksmålinger før og efter administration af medicin til de samme emner.

Alternativer

Selvom t-tests er kraftfulde, har de antagelser, der måske ikke altid er opfyldt. Alternativer inkluderer:

  • Mann-Whitney U Test:
    • Non-parametrisk alternativ til to-prøve t-test, når data ikke følger en normal fordeling.
  • Wilcoxon Signed-Rank Test:
    • Non-parametrisk ækvivalent til paired t-test.
  • ANOVA (Analyse af Varians):
    • Bruges, når man sammenligner gennemsnit på tværs af mere end to grupper.

Historie

T-testen blev udviklet af William Sealy Gosset i 1908, som offentliggjorde under pseudonymet "Student" mens han arbejdede på Guinness Brewery i Dublin. Testen blev designet til at overvåge kvaliteten af stout ved at bestemme, om prøvepartier var konsistente med bryggeriets standarder. På grund af fortrolighedsaftaler brugte Gosset pseudonymet "Student", hvilket førte til termen "Student's t-test."

Over tid er t-testen blevet en hjørnesten i statistisk analyse, bredt undervist og anvendt i forskellige videnskabelige discipliner. Den banede vejen for udviklingen af mere komplekse statistiske metoder og er grundlæggende inden for inferentiel statistik.

Eksempler

Her er kodeeksempler til udførelse af en One-Sample T-Test i forskellige programmeringssprog:

Excel

' One-Sample T-Test i Excel VBA
Sub OneSampleTTest()
    Dim sampleData As Range
    Set sampleData = Range("A1:A9") ' Erstat med dit dataområde
    Dim hypothesizedMean As Double
    hypothesizedMean = 50 ' Erstat med dit hypotetiske gennemsnit

    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-Statistik: " & Format(tStat, "0.00")
End Sub

R

## One-Sample T-Test i 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 i 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-Statistik: {t_statistic:.2f}, P-Værdi: {p_value:.4f}")

JavaScript

// One-Sample T-Test i 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;
}

// Eksempel brug:
const sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
const tStatistic = oneSampleTTest(sampleData, 50);
console.log(`T-Statistik: ${tStatistic.toFixed(2)}`);

MATLAB

% One-Sample T-Test i MATLAB
sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
[h, p, ci, stats] = ttest(sampleData, 50);
disp(['T-Statistik: ', num2str(stats.tstat)]);
disp(['P-Værdi: ', 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-Statistik: %.2f%n", tStatistic);
        System.out.printf("P-Værdi: %.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-Statistik: {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-Statistik: %.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-Statistik: %.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-Statistik: " . number_format($tStatistic, 2);
?>

Ruby

## One-Sample T-Test i 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-Statistik: %.2f", t_statistic)

Rust

// One-Sample T-Test i 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-Statistik: {:.2}", t_statistic);
}

Numerisk Eksempel

Problem: En producent hævder, at den gennemsnitlige levetid for et batteri er 50 timer. En forbrugergruppe tester 9 batterier og registrerer følgende levetider (i timer):

51, 49, 52, 48, 50, 47, 53, 49, 5151,\ 49,\ 52,\ 48,\ 50,\ 47,\ 53,\ 49,\ 51

Er der bevis på et 0.05 signifikansniveau for at antyde, at den gennemsnitlige batterilevetid adskiller sig fra 50 timer?

Løsning:

  1. Angiv Hypoteserne:

    • Nulhypotese (H0H_0): μ=50\mu = 50
    • Alternativ Hypotese (HaH_a): μ50\mu \neq 50
  2. Beregn Prøve Gennemsnit (xˉ\bar{x}):

    xˉ=51+49+52+48+50+47+53+49+519=50.00\bar{x} = \frac{51 + 49 + 52 + 48 + 50 + 47 + 53 + 49 + 51}{9} = 50.00
  3. Beregn Prøve Standardafvigelse (ss):

    s=(xixˉ)2n1=2.0s = \sqrt{\frac{\sum (x_i - \bar{x})^2}{n - 1}} = 2.0
  4. Beregn T-Statistik:

    t=xˉμ0sn=50.00502.09=0.00t = \frac{\bar{x} - \mu_0}{\frac{s}{\sqrt{n}}} = \frac{50.00 - 50}{\frac{2.0}{\sqrt{9}}} = 0.00
  5. Frihedsgrader:

    df=n1=8df = n - 1 = 8
  6. Bestem P-Værdi:

    • For t=0.00t = 0.00 og df=8df = 8, er p-værdien 1.00.
  7. Konklusion:

    • Da p-værdi (1.00) > α\alpha (0.05), undlader vi at afvise nulhypotesen.
    • Fortolkning: Der er ikke tilstrækkelig bevis til at antyde, at den gennemsnitlige batterilevetid adskiller sig fra 50 timer.

Referencer

  1. Gosset, W. S. (1908). "The Probable Error of a Mean". Biometrika, 6(1), 1–25. JSTOR.
  2. Student's t-test. Wikipedia. https://en.wikipedia.org/wiki/Student%27s_t-test
  3. GraphPad Statistics Guide: Forstå t-tests. Link
  4. Laerd Statistics: Uafhængig t-test. Link

Yderligere Ressourcer

  • Antagelses Kontroller:
    • Brug Shapiro-Wilk Test for normalitet.
    • Brug Levene's Test for lighed af varians.
  • Software Værktøjer:
    • SPSS, SAS, Stata, og R til avanceret statistisk analyse.
  • Yderligere Læsning:
    • "Introduction to Statistical Learning" af Gareth James, Daniela Witten, Trevor Hastie, og Robert Tibshirani.
    • "Statistical Methods" af George W. Snedecor og William G. Cochran.
Feedback