КАЛКУЛАТОР ЗА T-ТЕСТ
Въведение
t-тестът е основен статистически инструмент, използван за определяне дали съществува значима разлика между средните стойности на групи. Той се прилага широко в различни области, като психология, медицина и бизнес за тестване на хипотези. Този калкулатор ви позволява да извършвате всички видове t-тестове:
- t-тест за една извадка: Тества дали средната стойност на една група се различава от известна стойност.
- t-тест за две извадки (независими извадки): Сравнява средните стойности на две независими групи.
- сдвоен t-тест: Сравнява средните стойности от същата група в различни моменти (например, преди и след лечение).
Видове t-тестове
Как да използвате този калкулатор
-
Изберете типа на t-теста:
- t-тест за една извадка
- t-тест за две извадки
- Сдвоен t-тест
-
Въведете необходимите входни данни:
-
За t-тест за една извадка:
- Средна стойност на извадката ()
- Стандартно отклонение на извадката ()
- Размер на извадката ()
- Средна стойност на популацията ()
-
За t-тест за две извадки:
- Средна стойност на извадка 1 ()
- Стандартно отклонение на извадка 1 ()
- Размер на извадката на извадка 1 ()
- Средна стойност на извадка 2 ()
- Стандартно отклонение на извадка 2 ()
- Размер на извадката на извадка 2 ()
- Предположение за варианс: Изберете дали вариансите се считат за равни или неравни.
-
За сдвоен t-тест:
- Данни за разликите: Въведете паричните разлики.
- Алтернативно, въведете Средна стойност на разликите (), Стандартно отклонение на разликите () и Размер на извадката ().
-
-
Задайте ниво на значимост ():
- Общи избори са 0.05 за 95% доверителен интервал или 0.01 за 99% доверителен интервал.
-
Изберете посоката на теста:
- Двустранен тест: Тества за всяка разлика.
- Едностранен тест: Тества за насочена разлика (уточнете дали тествате за по-голямо или по-малко).
-
Натиснете бутона "Изчисли":
-
Калкулаторът ще покаже:
- t-статистика
- Степени на свобода
- p-стойност
- Заключение: Дали да отхвърлите или да не отхвърлите нулевата хипотеза.
-
Предположения
Преди да използвате t-теста, уверете се, че следните предположения са изпълнени:
- Нормалност: Данните трябва да са приблизително нормално разпределени.
- Независимост: Наблюденията трябва да са независими едно от друго.
- За t-тест за две извадки, двете групи трябва да са независими.
- За сдвоен t-тест, разликите трябва да са независими.
- Равенство на вариансите:
- За t-тест за две извадки с равни варианси, вариансите на двете популации трябва да са равни (хомоскедастичност).
- Ако това предположение не е изпълнено, използвайте Welch's T-Test (неравни варианси).
Формула
t-тест за една извадка
t-статистиката се изчислява като:
- : Средна стойност на извадката
- : Средна стойност на популацията под нулевата хипотеза
- : Стандартно отклонение на извадката
- : Размер на извадката
t-тест за две извадки (независими извадки)
При предположение за равни варианси
Обединено стандартно отклонение ():
Неравни варианси (Welch's T-Test)
Сдвоен t-тест
- : Средна стойност на разликите
- : Стандартно отклонение на разликите
- : Брой двойки
Степени на свобода
t-тест за една извадка и сдвоен t-тест:
t-тест за две извадки с равни варианси:
Welch's T-Test:
Изчисление
Калкулаторът извършва следните стъпки:
- Изчислява t-статистиката с помощта на подходящата формула, в зависимост от избрания тест.
- Определя степените на свобода (df).
- Изчислява p-стойността, съответстваща на t-статистиката и df:
- Използва t-разпределението, за да намери вероятността.
- Сравнява p-стойността с нивото на значимост ():
- Ако , отхвърлете нулевата хипотеза.
- Ако , не отхвърляйте нулевата хипотеза.
- Интерпретира резултатите:
- Предоставя заключение в контекста на теста.
Примери за употреба
t-тест за една извадка
- Тестване на ефикасността на ново лекарство:
- Определете дали средното време за възстановяване с ново лекарство се различава от известното средно време за възстановяване.
- Контрол на качеството:
- Проверете дали средната дължина на произведените части отклонява от зададения стандарт.
t-тест за две извадки
- A/B тестване в маркетинга:
- Сравнете конверсионните ставки между два различни дизайна на уеб страници.
- Образователни изследвания:
- Оценете дали има разлика в резултатите от тестовете между два метода на обучение.
Сдвоен t-тест
- Изследвания преди и след:
- Оценете загубата на тегло преди и след програма за диета.
- Съпоставени субекти:
- Сравнете измерванията на кръвното налягане преди и след прилагане на медикаменти на същите субекти.
Алтернативи
Докато t-тестовете са мощни, те имат предположения, които не винаги могат да бъдат изпълнени. Алтернативи включват:
- Mann-Whitney U тест:
- Непараметрична алтернатива на t-теста за две извадки, когато данните не следват нормално разпределение.
- Wilcoxon Signed-Rank тест:
- Непараметричен еквивалент на сдвоения t-тест.
- ANOVA (Анализ на вариацията):
- Използва се, когато се сравняват средни стойности между повече от две групи.
История
t-тестът е разработен от Уилям Сили Госет през 1908 г., който публикува под псевдонима "Студент", докато работи в пивоварната Guinness в Дъблин. Тестът е проектиран да следи качеството на стаута, като определя дали пробни партиди са в съответствие с стандартите на пивоварната. Поради споразумения за конфиденциалност, Госет използва псевдонима "Студент", което води до термина "t-тест на Студента."
С времето t-тестът се е утвърдил като основен инструмент в статистическия анализ, широко преподаван и прилаган в различни научни дисциплини. Той проправи пътя за развитието на по-сложни статистически методи и е основополагающ в областта на инференциалната статистика.
Примери
Ето примери за код за извършване на t-тест за една извадка в различни програмни езици:
Excel
' t-тест за една извадка в Excel VBA
Sub OneSampleTTest()
Dim sampleData As Range
Set sampleData = Range("A1:A9") ' Заменете с вашия диапазон от данни
Dim hypothesizedMean As Double
hypothesizedMean = 50 ' Заменете с вашата хипотетична средна стойност
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-статистика: " & Format(tStat, "0.00")
End Sub
R
## t-тест за една извадка в 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-тест за една извадка в 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-статистика: {t_statistic:.2f}, p-стойност: {p_value:.4f}")
JavaScript
// t-тест за една извадка в 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;
}
// Пример за употреба:
const sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
const tStatistic = oneSampleTTest(sampleData, 50);
console.log(`t-статистика: ${tStatistic.toFixed(2)}`);
MATLAB
% t-тест за една извадка в MATLAB
sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
[h, p, ci, stats] = ttest(sampleData, 50);
disp(['t-статистика: ', num2str(stats.tstat)]);
disp(['p-стойност: ', 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-статистика: %.2f%n", tStatistic);
System.out.printf("p-стойност: %.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-статистика: {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.0)
fmt.Printf("t-статистика: %.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-статистика: %.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-статистика: " . number_format($tStatistic, 2);
?>
Ruby
## t-тест за една извадка в 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-статистика: %.2f", t_statistic)
Rust
// t-тест за една извадка в 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-статистика: {:.2}", t_statistic);
}
Числов пример
Проблем: Производителят твърди, че средният живот на батерията е 50 часа. Група потребители тества 9 батерии и записва следните продължителности на живот (в часове):
Има ли доказателства на ниво значимост 0.05, за да се предположи, че средният живот на батерията се различава от 50 часа?
Решение:
-
Формулирайте хипотезите:
- Нулева хипотеза ():
- Алтернативна хипотеза ():
-
Изчислете средната стойност на извадката ():
-
Изчислете стандартното отклонение на извадката ():
-
Изчислете t-статистиката:
-
Степени на свобода:
-
Определете p-стойността:
- За и , p-стойността е 1.00.
-
Заключение:
- Тъй като p-стойност (1.00) > (0.05), ние не отхвърляме нулевата хипотеза.
- Интерпретация: Няма достатъчно доказателства, за да се предположи, че средният живот на батерията се различава от 50 часа.
Източници
- Госет, У. С. (1908). "Вероятната грешка на средната стойност". Биометрика, 6(1), 1–25. JSTOR.
- t-тест на Студента. Уикипедия. https://en.wikipedia.org/wiki/Student%27s_t-test
- Ръководство по статистика на GraphPad: Разбиране на t-тестовете. Линк
- Laerd Statistics: Независим t-тест. Линк
Допълнителни ресурси
- Проверки на предположенията:
- Използвайте Shapiro-Wilk тест за нормалност.
- Използвайте Levene's тест за равенство на вариансите.
- Инструменти за софтуер:
- SPSS, SAS, Stata и R за напреднал статистически анализ.
- Допълнително четене:
- "Въведение в статистическото обучение" от Гарт Джеймс, Даниела Уитън, Тревър Хастие и Робърт Тибширани.
- "Статистически методи" от Джордж У. Снедекор и Уилям Г. Кохран.