🛠️

Whiz Tools

Build • Create • Innovate

t検定計算機 - 一標本、二標本、対応のt検定ツール

一標本、二標本、対応のt検定など、あらゆる種類のt検定を実行します。この計算機は、平均値の統計的仮説検定を行い、データ分析と結果の解釈を支援します。

T検定計算機

sampleDataDescription
📚

ドキュメント

T-Test計算機

はじめに

t検定は、グループの平均値に有意な差があるかどうかを判断するための基本的な統計ツールです。これは、心理学、医学、ビジネスなどのさまざまな分野で仮説検定に広く適用されています。この計算機を使用すると、あらゆる種類のt検定を実行できます:

  • 1標本t検定:単一のグループの平均が既知の値と異なるかどうかを検定します。
  • 2標本t検定(独立サンプル):2つの独立したグループの平均を比較します。
  • 対応のあるt検定:異なる時間(例:治療前と治療後)で同じグループからの平均を比較します。

t検定の種類

サンプルデータ 母集団平均 1標本t検定 サンプル1 サンプル2 平均差 2標本t検定 差異 対応のあるt検定

この計算機の使い方

  1. t検定の種類を選択

    • 1標本t検定
    • 2標本t検定
    • 対応のあるt検定
  2. 必要な入力を入力

    • 1標本t検定の場合

      • サンプル平均 (xˉ\bar{x})
      • サンプル標準偏差 (ss)
      • サンプルサイズ (nn)
      • 母集団平均 (μ0\mu_0)
    • 2標本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検定を使用する前に、以下の仮定が満たされていることを確認してください:

  • 正規性:データはおおよそ正規分布している必要があります。
  • 独立性:観測値は互いに独立している必要があります。
    • 2標本t検定の場合、2つのグループは独立している必要があります。
    • 対応のあるt検定の場合、差異は独立している必要があります。
  • 分散の等質性
    • 等分散を仮定した2標本t検定では、2つの母集団の分散が等しい必要があります(等分散性)。
    • この仮定が満たされない場合は、ウェルチのt検定(不等分散)を使用します。

公式

1標本t検定

t統計量は次のように計算されます:

t=xˉμ0snt = \frac{\bar{x} - \mu_0}{\frac{s}{\sqrt{n}}}
  • xˉ\bar{x}:サンプル平均
  • μ0\mu_0:帰無仮説の下の母集団平均
  • ss:サンプル標準偏差
  • nn:サンプルサイズ

2標本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}}
不等分散(ウェルチの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:ペアの数

自由度

1標本および対応のあるt検定:
df=n1df = n - 1
等分散を仮定した2標本t検定:
df=n1+n22df = n_1 + n_2 - 2
ウェルチの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. 結果を解釈します
    • テストの文脈で結論を提供します。

使用例

1標本t検定

  • 新薬の効果テスト
    • 新薬による平均回復時間が既知の平均回復時間と異なるかどうかを判断します。
  • 品質管理
    • 製造された部品の平均長さが指定された基準から逸脱しているかどうかを確認します。

2標本t検定

  • マーケティングのA/Bテスト
    • 2つの異なるウェブページデザイン間のコンバージョン率を比較します。
  • 教育研究
    • 2つの教授法間のテストスコアに差があるかどうかを評価します。

対応のあるt検定

  • 前後の研究
    • ダイエットプログラム前後の体重減少を評価します。
  • マッチした被験者
    • 同じ被験者に薬を投与する前後の血圧測定を比較します。

代替手段

t検定は強力ですが、常に仮定が満たされるわけではありません。代替手段には以下が含まれます:

  • マンホイットニーU検定
    • データが正規分布に従わない場合の2標本t検定の非パラメトリック代替。
  • ウィルコクソン符号付順位検定
    • 対応のあるt検定の非パラメトリック等価。
  • ANOVA(分散分析)
    • 2つ以上のグループ間の平均を比較する際に使用されます。

歴史

t検定は、1908年にウィリアム・シーリー・ゴセットによって開発され、彼はダブリンのギネス醸造所で働いていた際に**「スチューデント」というペンネームで発表しました。この検定は、サンプルバッチが醸造所の基準に一致しているかどうかを判断するためにスタウトの品質を監視するために設計されました。機密保持契約のため、ゴセットは「スチューデント」というペンネームを使用し、これが「スチューデントのt検定」**という用語につながりました。

時が経つにつれ、t検定は統計分析の基盤となり、さまざまな科学分野で広く教えられ、適用されています。これは、より複雑な統計手法の開発への道を開き、推論統計の分野で基本的なものとなっています。

以下は、さまざまなプログラミング言語で1標本t検定を実行するためのコード例です:

Excel

1' Excel VBAでの1標本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での1標本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での1標本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での1標本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での1標本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    sample_data := []float64{51, 49, 52, 48, 50, 47, 53, 49, 51}
28    tStatistic := oneSampleTTest(sample_data, 50.0)
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での1標本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での1標本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.00 および df=8df = 8 の場合、p値は1.00です。
  7. 結論

    • p値 (1.00) > α\alpha (0.05) なので、帰無仮説を棄却しない
    • 解釈:平均バッテリー寿命が50時間と異なるという証拠は不十分です。

参考文献

  1. ゴセット, W. S. (1908). "平均の確率誤差". Biometrika, 6(1), 1–25. JSTOR.
  2. スチューデントのt検定. Wikipedia. https://en.wikipedia.org/wiki/Student%27s_t-test
  3. GraphPad統計ガイド:t検定の理解。 リンク
  4. Laerd Statistics:独立t検定。 リンク

追加リソース

  • 仮定のチェック
    • シャピロ・ウィルク検定を使用して正規性を確認します。
    • レビーン検定を使用して分散の等質性を確認します。
  • ソフトウェアツール
    • SPSSSASStata、およびRで高度な統計分析を行います。
  • さらなる読み物
    • "統計学習の入門" by Gareth James, Daniela Witten, Trevor Hastie, and Robert Tibshirani.
    • "統計的方法" by George W. Snedecor and William G. Cochran.