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
Kako koristiti ovaj kalkulator
-
Odaberite tip T-testa:
- T-test za jednu uzorak
- T-test za dva uzorka
- Upareni T-test
-
Unesite potrebne podatke:
-
Za T-test za jednu uzorak:
- Srednja vrednost uzorka ()
- Standardna devijacija uzorka ()
- Veličina uzorka ()
- Srednja vrednost populacije ()
-
Za T-test za dva uzorka:
- Srednja vrednost uzorka 1 ()
- Standardna devijacija uzorka 1 ()
- Veličina uzorka 1 ()
- Srednja vrednost uzorka 2 ()
- Standardna devijacija uzorka 2 ()
- Veličina uzorka 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 (), Standardnu devijaciju razlika () i Veličinu uzorka ().
-
-
Postavite nivo značajnosti ():
- Uobičajeni izbori su 0.05 za nivo poverenja od 95% ili 0.01 za nivo poverenja od 99%.
-
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).
-
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:
- : Srednja vrednost uzorka
- : Srednja vrednost populacije pod nultom hipotezom
- : Standardna devijacija uzorka
- : Veličina uzorka
T-test za dva uzorka (nezavisni uzorci)
Pretpostavljene jednake varijanse
Pooled standardna devijacija ():
Nejednake varijanse (Welchov T-test)
Upareni T-test
- : Srednja vrednost razlika
- : Standardna devijacija razlika
- : Broj parova
Stepeni slobode
T-test za jednu uzorak i Upareni T-test:
T-test za dva uzorka sa jednakim varijansama:
Welchov T-test:
Izračunavanje
Kalkulator izvršava sledeće korake:
- Izračunava T-statistiku koristeći odgovarajuću formulu na osnovu odabranog testa.
- Određuje Stepeni slobode (df).
- Izračunava P-vrednost koja odgovara t-statistici i df:
- Koristi t-distribuciju za pronalaženje verovatnoće.
- Upoređuje P-vrednost sa nivoom značajnosti ():
- Ako , odbaciti nultu hipotezu.
- Ako , ne odbaciti nultu hipotezu.
- 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):
Da li postoji dokaza na nivou značajnosti 0.05 da prosečan vek trajanja baterije nije 50 sati?
Rešenje:
-
Postavite hipoteze:
- Nulta hipoteza ():
- Alternativna hipoteza ():
-
Izračunajte srednju vrednost uzorka ():
-
Izračunajte standardnu devijaciju uzorka ():
-
Izračunajte T-statistiku:
-
Stepeni slobode:
-
Odredite P-vrednost:
- Za i , p-vrednost je 1.00.
-
Zaključak:
- Pošto je p-vrednost (1.00) > (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
- Gosset, W. S. (1908). "Verovatna greška srednje vrednosti". Biometrika, 6(1), 1–25. JSTOR.
- Studentov t-test. Wikipedia. https://en.wikipedia.org/wiki/Student%27s_t-test
- GraphPad Statistics Guide: Razumevanje t-testova. Link
- 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.