Whiz Tools
sampleDataDescription

Kalkulator T-testa

Uvod

T-test je osnovni statistički alat koji se koristi za određivanje postoji li značajna razlika između srednjih vrednosti grupa. Široko se primenjuje u raznim oblastima kao što su psihologija, medicina i biznis za testiranje hipoteza. Ovaj kalkulator vam omogućava da izvršite sve vrste t-testova:

  • T-test za jednu uzorak: Testira da li se srednja vrednost jedne grupe razlikuje od poznate vrednosti.
  • T-test za dva uzorka (nezavisni uzorci): Upoređuje srednje vrednosti dve nezavisne grupe.
  • Upareni T-test: Upoređuje srednje vrednosti iz iste grupe u različitim vremenskim tačkama (npr. pre i posle tretmana).

Tipovi T-testova

Podaci uzorka Srednja vrednost populacije T-test za jednu uzorak Uzorak 1 Uzorak 2 Razlika srednjih vrednosti T-test za dva uzorka Pre Posle Razlike Upareni T-test

Kako koristiti ovaj kalkulator

  1. Odaberite tip T-testa:

    • T-test za jednu uzorak
    • T-test za dva uzorka
    • Upareni T-test
  2. Unesite potrebne podatke:

    • Za T-test za jednu uzorak:

      • Srednja vrednost uzorka (xˉ\bar{x})
      • Standardna devijacija uzorka (ss)
      • Veličina uzorka (nn)
      • Srednja vrednost populacije (μ0\mu_0)
    • Za T-test za dva uzorka:

      • Srednja vrednost uzorka 1 (xˉ1\bar{x}_1)
      • Standardna devijacija uzorka 1 (s1s_1)
      • Veličina uzorka 1 (n1n_1)
      • Srednja vrednost uzorka 2 (xˉ2\bar{x}_2)
      • Standardna devijacija uzorka 2 (s2s_2)
      • Veličina uzorka 2 (n2n_2)
      • Pretpostavka o varijansi: Odaberite da li se varijanse smatraju jednakim ili nejednakim.
    • Za Upareni T-test:

      • Podaci o razlikama: Unesite razlike po parovima.
      • Alternativno, unesite Srednju vrednost razlika (dˉ\bar{d}), Standardnu devijaciju razlika (sds_d) i Veličinu uzorka (nn).
  3. Postavite nivo značajnosti (α\alpha):

    • Uobičajeni izbori su 0.05 za nivo poverenja od 95% ili 0.01 za nivo poverenja od 99%.
  4. Odaberite pravac testa:

    • Dvosmerni test: Testira za bilo kakvu razliku.
    • Jednosmerni test: Testira za pravac razlike (specifikujte da li testirate za veće ili manje).
  5. Kliknite na dugme "Izračunaj":

    • Kalkulator će prikazati:

      • T-statistika
      • Stepeni slobode
      • P-vrednost
      • Zaključak: Da li odbaciti ili ne odbaciti nultu hipotezu.

Pretpostavke

Pre korišćenja t-testa, osigurajte da su ispunjene sledeće pretpostavke:

  • Normalnost: Podaci bi trebali biti približno normalno distribuirani.
  • Nezavisnost: Posmatranja moraju biti nezavisna jedno od drugog.
    • Za T-test za dva uzorka, dve grupe treba da budu nezavisne.
    • Za Upareni T-test, razlike treba da budu nezavisne.
  • Jednakost varijansi:
    • Za T-test za dva uzorka sa jednakim varijansama, varijanse dve populacije treba da budu jednake (homoscedastičnost).
    • Ako ova pretpostavka nije ispunjena, koristite Welchov T-test (nejednake varijanse).

Formula

T-test za jednu uzorak

T-statistika se izračunava kao:

t=xˉμ0snt = \frac{\bar{x} - \mu_0}{\frac{s}{\sqrt{n}}}
  • xˉ\bar{x}: Srednja vrednost uzorka
  • μ0\mu_0: Srednja vrednost populacije pod nultom hipotezom
  • ss: Standardna devijacija uzorka
  • nn: Veličina uzorka

T-test za dva uzorka (nezavisni uzorci)

Pretpostavljene jednake varijanse
t=xˉ1xˉ2sp1n1+1n2t = \frac{\bar{x}_1 - \bar{x}_2}{s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}}

Pooled standardna devijacija (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}}
Nejednake varijanse (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}}}

Upareni T-test

t=dˉsdnt = \frac{\bar{d}}{\frac{s_d}{\sqrt{n}}}
  • dˉ\bar{d}: Srednja vrednost razlika
  • sds_d: Standardna devijacija razlika
  • nn: Broj parova

Stepeni slobode

T-test za jednu uzorak i Upareni T-test:
df=n1df = n - 1
T-test za dva uzorka sa jednakim varijansama:
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čunavanje

Kalkulator izvršava sledeće korake:

  1. Izračunava T-statistiku koristeći odgovarajuću formulu na osnovu odabranog testa.
  2. Određuje Stepeni slobode (df).
  3. Izračunava P-vrednost koja odgovara t-statistici i df:
    • Koristi t-distribuciju za pronalaženje verovatnoće.
  4. Upoređuje P-vrednost sa nivoom značajnosti (α\alpha):
    • Ako pαp \leq \alpha, odbaciti nultu hipotezu.
    • Ako p>αp > \alpha, ne odbaciti nultu hipotezu.
  5. Tumači rezultate:
    • Pruža zaključak u kontekstu testa.

Upotreba

T-test za jednu uzorak

  • Testiranje efikasnosti novog leka:
    • Utvrditi da li se prosečno vreme oporavka sa novim lekom razlikuje od poznatog prosečnog vremena oporavka.
  • Kontrola kvaliteta:
    • Proveriti da li se prosečna dužina proizvedenih delova razlikuje od specificirane norme.

T-test za dva uzorka

  • A/B testiranje u marketingu:
    • Uporediti stope konverzije između dva različita dizajna web stranica.
  • Obrazovna istraživanja:
    • Procena da li postoji razlika u rezultatima testova između dve metode podučavanja.

Upareni T-test

  • Studije pre i posle:
    • Procena gubitka težine pre i posle dijetskog programa.
  • Upareni subjekti:
    • Uporediti merenja krvnog pritiska pre i posle primene leka na istim subjektima.

Alternativne metode

Iako su t-testovi moćni, imaju pretpostavke koje možda nisu uvek ispunjene. Alternativne metode uključuju:

  • Mann-Whitney U test:
    • Neparametarska alternativa za t-test za dva uzorka kada podaci ne prate normalnu distribuciju.
  • Wilcoxonov test sa potpisanim rangovima:
    • Neparametarska ekvivalent uparenog t-testa.
  • ANOVA (Analiza varijanse):
    • Koristi se kada se upoređuju srednje vrednosti više od dve grupe.

Istorija

T-test je razvijen od strane Williama Sealyja Gosseta 1908. godine, koji je objavljivao pod pseudonimom "Student" dok je radio u pivari Guinness u Dablinu. Test je osmišljen da prati kvalitet stout piva određujući da li su uzorci u skladu sa standardima pivare. Zbog ugovora o poverljivosti, Gosset je koristio pseudonim "Student", što je dovelo do termina "Studentov t-test."

Vremenom, t-test je postao kamen temeljac u statističkoj analizi, široko se predaje i primenjuje u raznim naučnim disciplinama. Postavio je temelje za razvoj složenijih statističkih metoda i osnovni je u oblasti inferencijalne statistike.

Primeri

Evo primera koda za izvođenje T-testa za jednu uzorak u raznim programskim jezicima:

Excel

' T-test za jednu uzorak u Excel VBA
Sub OneSampleTTest()
    Dim sampleData As Range
    Set sampleData = Range("A1:A9") ' Zamenite sa vašim opsegom podataka
    Dim hypothesizedMean As Double
    hypothesizedMean = 50 ' Zamenite sa vašom hipotetizovanom srednjom vrednošću

    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 jednu uzorak u 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 jednu uzorak u 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 jednu uzorak u 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 korišćenja:
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 jednu uzorak u 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 jednu uzorak u 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 jednu uzorak u 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čki primer

Problem: Proizvođač tvrdi da je prosečan vek trajanja baterije 50 sati. Grupa potrošača testira 9 baterija i beleži sledeće vekove trajanja (u satima):

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

Da li postoji dokaza na nivou značajnosti 0.05 da prosečan vek trajanja baterije nije 50 sati?

Rešenje:

  1. Postavite hipoteze:

    • Nulta hipoteza (H0H_0): μ=50\mu = 50
    • Alternativna hipoteza (HaH_a): μ50\mu \neq 50
  2. Izračunajte srednju vrednost uzorka (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 standardnu devijaciju uzorka (ss):

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

    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. Stepeni slobode:

    df=n1=8df = n - 1 = 8
  6. Odredite P-vrednost:

    • Za t=0.00t = 0.00 i df=8df = 8, p-vrednost je 1.00.
  7. Zaključak:

    • Pošto je p-vrednost (1.00) > α\alpha (0.05), ne odbacujemo nultu hipotezu.
    • Tumačenje: Nema dovoljno dokaza da se sugeriše da prosečan vek trajanja baterije nije 50 sati.

Reference

  1. Gosset, W. S. (1908). "Verovatna greška srednje vrednosti". Biometrika, 6(1), 1–25. JSTOR.
  2. Studentov t-test. Wikipedia. https://en.wikipedia.org/wiki/Student%27s_t-test
  3. GraphPad Statistics Guide: Razumevanje t-testova. Link
  4. Laerd Statistics: Nezavisni t-test. Link

Dodatni resursi

  • Provere pretpostavki:
    • Koristite Shapiro-Wilk test za normalnost.
    • Koristite Leveneov test za jednakost varijansi.
  • Softverski alati:
    • SPSS, SAS, Stata i R za naprednu statističku analizu.
  • Dalje čitanje:
    • "Uvod u statističko učenje" od Garetha Jamesa, Daniel Witten, Trevor Hastie i Robert Tibshirani.
    • "Statističke metode" od Georgea W. Snedecora i Williama G. Cochran.
Feedback