Whiz Tools
sampleDataDescription

Kalkulator T-testa

Uvod

T-test je temeljno statistično orodje, ki se uporablja za določitev, ali obstaja pomembna razlika med srednjimi vrednostmi skupin. Široko se uporablja na različnih področjih, kot so psihologija, medicina in poslovanje za testiranje hipotez. Ta kalkulator vam omogoča izvajanje vseh vrst t-testov:

  • T-test za eno skupino: Preverja, ali se srednja vrednost ene skupine razlikuje od znane vrednosti.
  • T-test za dve skupini (neodvisni vzorci): Primerja srednje vrednosti dveh neodvisnih skupin.
  • Parni T-test: Primerja srednje vrednosti iste skupine ob različnih časih (npr. pred in po zdravljenju).

Vrste T-testov

Podatki vzorca Srednja vrednost populacije T-test za eno skupino Vzorec 1 Vzorec 2 Razlika srednjih vrednosti T-test za dve skupini Pred Po Razlike Parni T-test

Kako uporabljati ta kalkulator

  1. Izberite vrsto T-testa:

    • T-test za eno skupino
    • T-test za dve skupini
    • Parni T-test
  2. Vnesite zahtevane podatke:

    • Za T-test za eno skupino:

      • Srednja vrednost vzorca (xˉ\bar{x})
      • Standardni odklon vzorca (ss)
      • Velikost vzorca (nn)
      • Srednja vrednost populacije (μ0\mu_0)
    • Za T-test za dve skupini:

      • Srednja vrednost vzorca 1 (xˉ1\bar{x}_1)
      • Standardni odklon vzorca 1 (s1s_1)
      • Velikost vzorca 1 (n1n_1)
      • Srednja vrednost vzorca 2 (xˉ2\bar{x}_2)
      • Standardni odklon vzorca 2 (s2s_2)
      • Velikost vzorca 2 (n2n_2)
      • Predpostavka o variancah: Izberite, ali so variances enake ali različne.
    • Za Parni T-test:

      • Podatki o razlikah: Vnesite pare razlik.
      • Alternativno, vnesite Srednjo vrednost razlik (dˉ\bar{d}), Standardni odklon razlik (sds_d) in Velikost vzorca (nn).
  3. Nastavite nivo pomembnosti (α\alpha):

    • Pogoste izbire so 0.05 za 95% raven zaupanja ali 0.01 za 99% raven zaupanja.
  4. Izberite smer testa:

    • Dvo-stranski test: Preverja kakršno koli razliko.
    • Eno-stranski test: Preverja smerno razliko (določite, ali testirate za večje ali manjše).
  5. Kliknite gumb "Izračunaj":

    • Kalkulator bo prikazal:

      • T-statistika
      • Stopinje svobode
      • P-vrednost
      • Zaključek: Ali zavrniti ali ne zavrniti ničelne hipoteze.

Predpostavke

Pred uporabo t-testa se prepričajte, da so izpolnjene naslednje predpostavke:

  • Normalnost: Podatki naj bi bili približno normalno porazdeljeni.
  • Neodvisnost: Opazovanja morajo biti neodvisna drug od drugega.
    • Pri T-testu za dve skupini morata biti dve skupini neodvisni.
    • Pri Parnem T-testu morajo biti razlike neodvisne.
  • Enakost varianc:
    • Pri T-testu za dve skupini z enakimi variancami morajo biti variance dveh populacij enake (homoscedastičnost).
    • Če ta predpostavka ni izpolnjena, uporabite Welchov T-test (različne variance).

Formula

T-test za eno skupino

T-statistika se izračuna kot:

t=xˉμ0snt = \frac{\bar{x} - \mu_0}{\frac{s}{\sqrt{n}}}
  • xˉ\bar{x}: Srednja vrednost vzorca
  • μ0\mu_0: Srednja vrednost populacije pod ničelno hipotezo
  • ss: Standardni odklon vzorca
  • nn: Velikost vzorca

T-test za dve skupini (neodvisni vzorci)

Predpostavljene enake variance
t=xˉ1xˉ2sp1n1+1n2t = \frac{\bar{x}_1 - \bar{x}_2}{s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}}

Pooled standardni odklon (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}}
Različne variance (Welchov 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}}}

Parni T-test

t=dˉsdnt = \frac{\bar{d}}{\frac{s_d}{\sqrt{n}}}
  • dˉ\bar{d}: Srednja vrednost razlik
  • sds_d: Standardni odklon razlik
  • nn: Število parov

Stopinje svobode

T-test za eno skupino in Parni T-test:
df=n1df = n - 1
T-test za dve skupini z enakimi variancami:
df=n1+n22df = n_1 + n_2 - 2
Welchov 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}}

Izračun

Kalkulator izvede naslednje korake:

  1. Izračunajte T-statistiko z uporabo ustrezne formule na podlagi izbrane teste.
  2. Določite stopinje svobode (df).
  3. Izračunajte P-vrednost, ki ustreza t-statistiki in df:
    • Uporablja t-porazdelitev za iskanje verjetnosti.
  4. Primerjajte P-vrednost z nivojem pomembnosti (α\alpha):
    • Če pαp \leq \alpha, zavrnite ničelno hipotezo.
    • Če p>αp > \alpha, ne zavrnite ničelne hipoteze.
  5. Interpretirajte rezultate:
    • Povejte zaključek v kontekstu testa.

Uporabniški primeri

T-test za eno skupino

  • Testiranje učinkovitosti novega zdravila:
    • Določite, ali se povprečen čas okrevanja z novim zdravilom razlikuje od znanega povprečnega časa okrevanja.
  • Nadzor kakovosti:
    • Preverite, ali se povprečna dolžina proizvedenih delov razlikuje od predpisane norme.

T-test za dve skupini

  • A/B testiranje v marketingu:
    • Primerjajte stopnje konverzije med dvema različnima oblikama spletne strani.
  • Izobraževalna raziskava:
    • Ocenite, ali obstaja razlika v rezultatih testov med dvema učnima metodama.

Parni T-test

  • Študije pred in po:
    • Ocenite izgubo teže pred in po dietnem programu.
  • Ujemajoči se subjekti:
    • Primerjajte meritve krvnega tlaka pred in po dajanju zdravila istim subjektom.

Alternativne metode

Čeprav so t-testi močni, imajo predpostavke, ki morda ne bodo vedno izpolnjene. Alternativne metode vključujejo:

  • Mann-Whitney U Test:
    • Neparametrična alternativa t-testu za dve skupini, ko podatki ne sledijo normalni porazdelitvi.
  • Wilcoxon Signed-Rank Test:
    • Neparametrični ekvivalent parnemu t-testu.
  • ANOVA (Analiza variance):
    • Uporablja se pri primerjavi srednjih vrednosti več kot dveh skupin.

Zgodovina

T-test je razvil William Sealy Gosset leta 1908, ki je objavil pod psevdonimom "Student" med delom v pivovarni Guinness v Dublinu. Test je bil zasnovan za spremljanje kakovosti stouta z določanjem, ali so vzorčni seriji skladni s standardi pivovarne. Zaradi zaupnosti je Gosset uporabil psevdonim "Student", kar je pripeljalo do izraza "Studentov t-test."

Sčasoma je t-test postal temelj statistične analize, široko poučevan in uporabljen v različnih znanstvenih disciplinah. Utrdil je pot razvoju bolj kompleksnih statističnih metod in je temelj na področju inferenčne statistike.

Primeri

Tukaj so primeri kode za izvajanje T-testa za eno skupino v različnih programskih jezikih:

Excel

' T-test za eno skupino v Excel VBA
Sub OneSampleTTest()
    Dim sampleData As Range
    Set sampleData = Range("A1:A9") ' Zamenjajte z obsegom vaših podatkov
    Dim hypothesizedMean As Double
    hypothesizedMean = 50 ' Zamenjajte z vašo predpostavljeno srednjo vrednost

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

R

## T-test za eno skupino v 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

## T-test za eno skupino v Pythonu
sample_data = [51, 49, 52, 48, 50, 47, 53, 49, 51]
t_statistic, p_value = stats.ttest_1samp(sample_data, 50)
print(f"T-statistika: {t_statistic:.2f}, P-vrednost: {p_value:.4f}")

JavaScript

// T-test za eno skupino v JavaScriptu
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;
}

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

MATLAB

% T-test za eno skupino v MATLAB-u
sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
[h, p, ci, stats] = ttest(sampleData, 50);
disp(['T-statistika: ', num2str(stats.tstat)]);
disp(['P-vrednost: ', 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-statistika: %.2f%n", tStatistic);
        System.out.printf("P-vrednost: %.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-statistika: {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-statistika: %.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-statistika: %.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-statistika: " . number_format($tStatistic, 2);
?>

Ruby

## T-test za eno skupino v 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-statistika: %.2f", t_statistic)

Rust

// T-test za eno skupino v Rustu
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-statistika: {:.2}", t_statistic);
}

Numerični primer

Problem: Proizvajalec trdi, da je povprečna življenjska doba baterije 50 ur. Potrošniška skupina testira 9 baterij in zabeleži naslednje življenjske dobe (v urah):

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

Ali obstajajo dokazi na 0.05 ravni pomembnosti, ki kažejo, da se povprečna življenjska doba baterij razlikuje od 50 ur?

Rešitev:

  1. Določite hipoteze:

    • Ničelna hipoteza (H0H_0): μ=50\mu = 50
    • Alternativna hipoteza (HaH_a): μ50\mu \neq 50
  2. Izračunajte srednjo vrednost vzorca (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. Izračunajte standardni odklon vzorca (ss):

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

    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. Stopinje svobode:

    df=n1=8df = n - 1 = 8
  6. Določite P-vrednost:

    • Za t=0.00t = 0.00 in df=8df = 8 je p-vrednost 1.00.
  7. Zaključek:

    • Ker p-vrednost (1.00) > α\alpha (0.05), ne zavrnemo ničelne hipoteze.
    • Interpretacija: Ni dovolj dokazov, da bi trdili, da se povprečna življenjska doba baterij razlikuje od 50 ur.

Reference

  1. Gosset, W. S. (1908). "Verjetna napaka povprečja". Biometrika, 6(1), 1–25. JSTOR.
  2. Studentov t-test. Wikipedia. https://en.wikipedia.org/wiki/Student%27s_t-test
  3. Vodnik za statistiko GraphPad: Razumevanje t-testov. Povezava
  4. Laerd Statistics: Neodvisni t-test. Povezava

Dodatni viri

  • Preverjanje predpostavk:
    • Uporabite Shapiro-Wilk test za normalnost.
    • Uporabite Leveneov test za enakost varianc.
  • Orodja programske opreme:
    • SPSS, SAS, Stata in R za napredno statistično analizo.
  • Dodatno branje:
    • "Uvod v statistično učenje" avtorjev Gareth James, Daniela Witten, Trevor Hastie in Robert Tibshirani.
    • "Statistične metode" avtorjev George W. Snedecor in William G. Cochran.
Feedback