🛠️

Whiz Tools

Build • Create • Innovate

T-검정 계산기: 통계적 가설 검정 도구

모든 종류의 t-검정을 수행하세요: 단일 표본, 두 표본 및 쌍체 t-검정. 이 계산기를 사용하면 평균에 대한 통계적 가설 검정을 수행할 수 있으며, 데이터 분석 및 결과 해석에 도움을 줍니다.

T-검정 계산기

sampleDataDescription
📚

문서

T-Test 계산기

소개

t-검정은 그룹의 평균 간에 유의미한 차이가 있는지를 결정하는 데 사용되는 기본적인 통계 도구입니다. 이는 심리학, 의학, 비즈니스 등 다양한 분야에서 가설 검정에 널리 적용됩니다. 이 계산기를 사용하면 모든 종류의 t-검정을 수행할 수 있습니다:

  • 단일 샘플 t-검정: 단일 그룹의 평균이 알려진 값과 다른지를 테스트합니다.
  • 두 샘플 t-검정 (독립 샘플): 두 개의 독립적인 그룹의 평균을 비교합니다.
  • 쌍체 t-검정: 서로 다른 시간에 같은 그룹의 평균을 비교합니다 (예: 치료 전후).

t-검정의 종류

샘플 데이터 모집단 평균 단일 샘플 t-검정 샘플 1 샘플 2 평균 차이 두 샘플 t-검정 차이 쌍체 t-검정

이 계산기 사용 방법

  1. t-검정 유형 선택:

    • 단일 샘플 t-검정
    • 두 샘플 t-검정
    • 쌍체 t-검정
  2. 필요한 입력값 입력:

    • 단일 샘플 t-검정의 경우:

      • 샘플 평균 (xˉ\bar{x})
      • 샘플 표준 편차 (ss)
      • 샘플 크기 (nn)
      • 모집단 평균 (μ0\mu_0)
    • 두 샘플 t-검정의 경우:

      • 샘플 1의 평균 (xˉ1\bar{x}_1)
      • 샘플 1의 표준 편차 (s1s_1)
      • 샘플 1의 샘플 크기 (n1n_1)
      • 샘플 2의 평균 (xˉ2\bar{x}_2)
      • 샘플 2의 표준 편차 (s2s_2)
      • 샘플 2의 샘플 크기 (n2n_2)
      • 분산 가정: 분산이 같다고 가정할지 여부 선택.
    • 쌍체 t-검정의 경우:

      • 차이 데이터: 쌍별 차이를 입력합니다.
      • 대안적으로, 차이의 평균 (dˉ\bar{d}), 차이의 표준 편차 (sds_d), 샘플 크기 (nn) 입력.
  3. 유의 수준 (α\alpha) 설정:

    • 일반적인 선택은 0.05 (95% 신뢰 수준) 또는 0.01 (99% 신뢰 수준)입니다.
  4. 검정 방향 선택:

    • 양측 검정: 어떤 차이가 있는지 테스트합니다.
    • 단측 검정: 방향성 차이를 테스트합니다 (크거나 작음을 지정).
  5. "계산" 버튼 클릭:

    • 계산기는 다음을 표시합니다:

      • t-통계량
      • 자유도
      • p-값
      • 결론: 귀무 가설을 기각할지 또는 기각하지 않을지.

가정

t-검정을 사용하기 전에 다음 가정이 충족되는지 확인하십시오:

  • 정규성: 데이터는 대략적으로 정규 분포를 따라야 합니다.
  • 독립성: 관측치는 서로 독립적이어야 합니다.
    • 두 샘플 t-검정의 경우, 두 그룹은 독립적이어야 합니다.
    • 쌍체 t-검정의 경우, 차이는 독립적이어야 합니다.
  • 분산의 동등성:
    • 동등한 분산을 가정한 두 샘플 t-검정의 경우, 두 모집단의 분산은 같아야 합니다 (동질성).
    • 이 가정이 충족되지 않으면 Welch의 t-검정 (불균등 분산)을 사용하십시오.

공식

단일 샘플 t-검정

t-통계량은 다음과 같이 계산됩니다:

t=xˉμ0snt = \frac{\bar{x} - \mu_0}{\frac{s}{\sqrt{n}}}
  • xˉ\bar{x}: 샘플 평균
  • μ0\mu_0: 귀무 가설 하의 모집단 평균
  • ss: 샘플 표준 편차
  • nn: 샘플 크기

두 샘플 t-검정 (독립 샘플)

동등한 분산 가정
t=xˉ1xˉ2sp1n1+1n2t = \frac{\bar{x}_1 - \bar{x}_2}{s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}}

풀린 표준 편차 (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}}
불균등한 분산 (Welch의 t-검정)
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}}}

쌍체 t-검정

t=dˉsdnt = \frac{\bar{d}}{\frac{s_d}{\sqrt{n}}}
  • dˉ\bar{d}: 차이의 평균
  • sds_d: 차이의 표준 편차
  • nn: 쌍의 수

자유도

단일 샘플 및 쌍체 t-검정:
df=n1df = n - 1
동등한 분산을 가정한 두 샘플 t-검정:
df=n1+n22df = n_1 + n_2 - 2
Welch의 t-검정:
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}}

계산

계산기는 다음 단계를 수행합니다:

  1. 선택한 테스트에 따라 적절한 공식을 사용하여 t-통계량을 계산합니다.
  2. 자유도 (df)를 결정합니다.
  3. t-통계량과 df에 해당하는 p-값을 계산합니다:
    • t-분포를 사용하여 확률을 찾습니다.
  4. p-값을 유의 수준 (α\alpha)과 비교합니다:
    • 만약 pαp \leq \alpha이면, 귀무 가설을 기각합니다.
    • 만약 p>αp > \alpha이면, 귀무 가설을 기각하지 않습니다.
  5. 결과를 해석합니다:
    • 테스트의 맥락에서 결론을 제공합니다.

사용 사례

단일 샘플 t-검정

  • 신약 효능 테스트:
    • 신약의 평균 회복 시간이 알려진 평균 회복 시간과 다른지를 결정합니다.
  • 품질 관리:
    • 제조된 부품의 평균 길이가 지정된 기준에서 벗어나는지를 확인합니다.

두 샘플 t-검정

  • 마케팅 A/B 테스트:
    • 두 개의 서로 다른 웹 페이지 디자인 간의 전환율을 비교합니다.
  • 교육 연구:
    • 두 가지 교수 방법 간의 시험 점수 차이를 평가합니다.

쌍체 t-검정

  • 전후 연구:
    • 다이어트 프로그램 전후의 체중 변화를 평가합니다.
  • 일치하는 피험자:
    • 같은 피험자에게 약물을 투여하기 전후의 혈압 측정을 비교합니다.

대안

t-검정은 강력하지만 항상 충족되지 않을 수 있는 가정이 있습니다. 대안으로는 다음이 있습니다:

  • Mann-Whitney U 테스트:
    • 데이터가 정규 분포를 따르지 않을 때 두 샘플 t-검정의 비모수적 대안.
  • Wilcoxon 부호 순위 테스트:
    • 쌍체 t-검정의 비모수적 대안.
  • ANOVA (분산 분석):
    • 두 개 이상의 그룹 간의 평균을 비교할 때 사용됩니다.

역사

t-검정은 William Sealy Gosset이 1908년에 개발하였으며, 그는 더블린의 기네스 양조장에서 일하면서 **"Student"**라는 필명으로 발표하였습니다. 이 검정은 샘플 배치가 양조장의 기준과 일치하는지 확인하기 위해 설계되었습니다. 비밀 유지 계약 때문에 Gosset은 "Student"라는 필명을 사용하게 되었고, 이로 인해 **"Student's t-test"**라는 용어가 생겨났습니다.

시간이 지나면서 t-검정은 통계 분석의 초석이 되었으며, 다양한 과학 분야에서 널리 교육되고 적용되고 있습니다. 이는 더 복잡한 통계 방법의 발전을 위한 기초를 마련하였으며, 추론 통계 분야에서 기본적인 역할을 합니다.

예제

다음은 다양한 프로그래밍 언어에서 단일 샘플 t-검정을 수행하는 코드 예제입니다:

Excel

1' Excel VBA에서 단일 샘플 t-검정
2Sub OneSampleTTest()
3    Dim sampleData As Range
4    Set sampleData = Range("A1:A9") ' 데이터 범위로 교체
5    Dim hypothesizedMean As Double
6    hypothesizedMean = 50 ' 가설 평균으로 교체
7
8    Dim sampleMean As Double
9    Dim sampleStdDev As Double
10    Dim sampleSize As Integer
11    Dim tStat As Double
12
13    sampleMean = Application.WorksheetFunction.Average(sampleData)
14    sampleStdDev = Application.WorksheetFunction.StDev_S(sampleData)
15    sampleSize = sampleData.Count
16
17    tStat = (sampleMean - hypothesizedMean) / (sampleStdDev / Sqr(sampleSize))
18
19    MsgBox "t-통계량: " & Format(tStat, "0.00")
20End Sub
21

R

1## R에서 단일 샘플 t-검정
2sample_data <- c(51, 49, 52, 48, 50, 47, 53, 49, 51)
3t_test_result <- t.test(sample_data, mu = 50)
4print(t_test_result)
5

Python

1import numpy as np
2from scipy import stats
3
4## Python에서 단일 샘플 t-검정
5sample_data = [51, 49, 52, 48, 50, 47, 53, 49, 51]
6t_statistic, p_value = stats.ttest_1samp(sample_data, 50)
7print(f"t-통계량: {t_statistic:.2f}, p-값: {p_value:.4f}")
8

JavaScript

1// JavaScript에서 단일 샘플 t-검정
2function oneSampleTTest(sample, mu0) {
3  const n = sample.length;
4  const mean = sample.reduce((a, b) => a + b) / n;
5  const sd = Math.sqrt(sample.map(x => (x - mean) ** 2).reduce((a, b) => a + b) / (n - 1));
6  const t = (mean - mu0) / (sd / Math.sqrt(n));
7  return t;
8}
9
10// 사용 예시:
11const sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
12const tStatistic = oneSampleTTest(sampleData, 50);
13console.log(`t-통계량: ${tStatistic.toFixed(2)}`);
14

MATLAB

1% MATLAB에서 단일 샘플 t-검정
2sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
3[h, p, ci, stats] = ttest(sampleData, 50);
4disp(['t-통계량: ', num2str(stats.tstat)]);
5disp(['p-값: ', num2str(p)]);
6

Java

1import org.apache.commons.math3.stat.inference.TTest;
2
3public class OneSampleTTest {
4    public static void main(String[] args) {
5        double[] sampleData = {51, 49, 52, 48, 50, 47, 53, 49, 51};
6        TTest tTest = new TTest();
7        double mu = 50;
8        double tStatistic = tTest.t(mu, sampleData);
9        double pValue = tTest.tTest(mu, sampleData);
10        System.out.printf("t-통계량: %.2f%n", tStatistic);
11        System.out.printf("p-값: %.4f%n", pValue);
12    }
13}
14

C#

1using System;
2using MathNet.Numerics.Statistics;
3
4class OneSampleTTest
5{
6    static void Main()
7    {
8        double[] sampleData = {51, 49, 52, 48, 50, 47, 53, 49, 51};
9        double mu0 = 50;
10        int n = sampleData.Length;
11        double mean = Statistics.Mean(sampleData);
12        double stdDev = Statistics.StandardDeviation(sampleData);
13        double tStatistic = (mean - mu0) / (stdDev / Math.Sqrt(n));
14        Console.WriteLine($"t-통계량: {tStatistic:F2}");
15    }
16}
17

Go

1package main
2
3import (
4    "fmt"
5    "math"
6)
7
8func oneSampleTTest(sample []float64, mu0 float64) float64 {
9    n := float64(len(sample))
10    var sum, mean, sd float64
11
12    for _, v := range sample {
13        sum += v
14    }
15    mean = sum / n
16
17    for _, v := range sample {
18        sd += math.Pow(v - mean, 2)
19    }
20    sd = math.Sqrt(sd / (n - 1))
21
22    t := (mean - mu0) / (sd / math.Sqrt(n))
23    return t
24}
25
26func main() {
27    sampleData := []float64{51, 49, 52, 48, 50, 47, 53, 49, 51}
28    tStatistic := oneSampleTTest(sampleData, 50)
29    fmt.Printf("t-통계량: %.2f\n", tStatistic)
30}
31

Swift

1import Foundation
2
3func oneSampleTTest(sample: [Double], mu0: Double) -> Double {
4    let n = Double(sample.count)
5    let mean = sample.reduce(0, +) / n
6    let sd = sqrt(sample.map { pow($0 - mean, 2) }.reduce(0, +) / (n - 1))
7    let t = (mean - mu0) / (sd / sqrt(n))
8    return t
9}
10
11let sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51]
12let tStatistic = oneSampleTTest(sample: sampleData, mu0: 50)
13print(String(format: "t-통계량: %.2f", tStatistic))
14

PHP

1<?php
2function oneSampleTTest($sample, $mu0) {
3    $n = count($sample);
4    $mean = array_sum($sample) / $n;
5    $sd = sqrt(array_sum(array_map(function($x) use ($mean) {
6        return pow($x - $mean, 2);
7    }, $sample)) / ($n - 1));
8    $t = ($mean - $mu0) / ($sd / sqrt($n));
9    return $t;
10}
11
12$sampleData = [51, 49, 52, 48, 50, 47, 53, 49, 51];
13$tStatistic = oneSampleTTest($sampleData, 50);
14echo "t-통계량: " . number_format($tStatistic, 2);
15?>
16

Ruby

1## Ruby에서 단일 샘플 t-검정
2def one_sample_t_test(sample, mu0)
3  n = sample.size
4  mean = sample.sum(0.0) / n
5  sd = Math.sqrt(sample.map { |x| (x - mean)**2 }.sum / (n - 1))
6  t = (mean - mu0) / (sd / Math.sqrt(n))
7  t
8end
9
10sample_data = [51, 49, 52, 48, 50, 47, 53, 49, 51]
11t_statistic = one_sample_t_test(sample_data, 50)
12puts format("t-통계량: %.2f", t_statistic)
13

Rust

1// Rust에서 단일 샘플 t-검정
2fn one_sample_t_test(sample: &Vec<f64>, mu0: f64) -> f64 {
3    let n = sample.len() as f64;
4    let mean: f64 = sample.iter().sum::<f64>() / n;
5    let sd = (sample.iter().map(|x| (x - mean).powi(2)).sum::<f64>() / (n - 1.0)).sqrt();
6    let t = (mean - mu0) / (sd / n.sqrt());
7    t
8}
9
10fn main() {
11    let sample_data = vec![51.0, 49.0, 52.0, 48.0, 50.0, 47.0, 53.0, 49.0, 51.0];
12    let t_statistic = one_sample_t_test(&sample_data, 50.0);
13    println!("t-통계량: {:.2}", t_statistic);
14}
15

수치 예제

문제: 한 제조업체가 배터리의 평균 수명이 50시간이라고 주장합니다. 소비자 그룹이 9개의 배터리를 테스트하고 다음과 같은 수명을 기록했습니다 (시간 단위):

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

평균 배터리 수명이 50시간과 다르다는 증거가 0.05 유의 수준에서 존재합니까?

해결:

  1. 가설 설정:

    • 귀무 가설 (H0H_0): μ=50\mu = 50
    • 대립 가설 (HaH_a): μ50\mu \neq 50
  2. 샘플 평균 (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. 샘플 표준 편차 (ss) 계산:

    s=(xixˉ)2n1=2.0s = \sqrt{\frac{\sum (x_i - \bar{x})^2}{n - 1}} = 2.0
  4. t-통계량 계산:

    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. 자유도 결정:

    df=n1=8df = n - 1 = 8
  6. p-값 결정:

    • t=0.00t = 0.00df=8df = 8에 대해 p-값은 1.00입니다.
  7. 결론:

    • **p-값 (1.00) > α\alpha (0.05)**이므로, 우리는 귀무 가설을 기각하지 않습니다.
    • 해석: 평균 배터리 수명이 50시간과 다르다는 증거가 충분하지 않습니다.

참고 문헌

  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: t-검정 이해하기. 링크
  4. Laerd Statistics: 독립 t-검정. 링크

추가 자료

  • 가정 검사:
    • Shapiro-Wilk 테스트를 사용하여 정규성을 검사합니다.
    • Levene의 테스트를 사용하여 분산의 동등성을 검사합니다.
  • 소프트웨어 도구:
    • SPSS, SAS, Stata, R를 사용하여 고급 통계 분석을 수행합니다.
  • 추가 읽기 자료:
    • "Introduction to Statistical Learning" by Gareth James, Daniela Witten, Trevor Hastie, and Robert Tibshirani.
    • "Statistical Methods" by George W. Snedecor and William G. Cochran.