问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

统计学常用的分析方法:T检验

创作时间:
作者:
@小白创作中心

统计学常用的分析方法:T检验

引用
CSDN
1.
https://m.blog.csdn.net/2401_88845856/article/details/143869394

T检验是统计学中一种常用的假设检验方法,主要用于比较数据集的均值差异。本文将详细介绍T检验的三种类型(单样本T检验、配对样本T检验和独立样本T检验),并提供在MATLAB、Python和R语言中的具体实现方法。

1. T检验概述

T检验根据使用场景可以分为三类:

  • 单样本T检验(One-sample t-test)

  • 用途:比较单个样本的均值与已知总体均值的差异。

  • 假设:样本来自正态分布的总体。

  • 例子:学生的每次数学成绩是否符合均值为xx的正态分布。

  • 配对样本T检验(Paired Samples t-test)

  • 用途:用于比较同一组样本在两个不同条件下的均值是否显著不同。

  • 假设:假设两个条件下的数据是成对的,即每个观察值在两个条件下都有对应。另外,假设成对差值符合正态分布。

  • 例子:班级里的所有学生期中考试和期末考试成绩的数学成绩是否存在差异。

  • 独立样本T检验(Independent Samples t-test)

  • 用途:比较两个独立样本的均值是否显著不同。

  • 假设:假设两组数据是独立的,即一个组的观察值不会受到另一个组的影响。另外,假设两组数据符合正态分布和方差齐性。

  • 例子:两个班级进行同一场考试,学生数学考试成绩是否存在差异。

如果样本量很小,就难以检验正态性,在这种情况下需要对所分析的数据有一定的理解。比如,对于考试分数数据,如果清楚分数差异的潜在分布是符合正态分布的。即使是很小的样本量,讲师也可能会采用 t 检验并做出正态性假设。

如果知道潜在测量值不是正态分布的,或者样本量较大并且正态性检验被拒绝,在这种情况下,可以使用非参数分析。这种类型的分析不需要假设数据来自特定的分布。

  • 对于单样本 T 检验和配对 T 检验,可以使用 Wilcoxon 符号秩检验替代。
  • 对于双样本 T 检验,可以使用 Wilcoxon 秩和检验替代。

如果有两个以上的组,可以使用多重比较方法。该方法包括:方差分析 (ANOVA),用于检验所有配对差异的 Tukey-Kramer 检验,用于将组间均值与总体均值进行比较的均值分析 (ANOM),或用于将每组均值与对照均值进行比较的 Dunnett’s 检验。

2. 代码实现T检验

2.1 MATLAB

  • 单一样本T检验:

    [h, p, ci, stats] = ttest(data, mu);
    
  • 配对样本T检验:

    [h, p, ci, stats] = ttest(data1, data2);
    
  • 独立样本T检验:

    [h, p, ci, stats] = ttest2(data1, data2);
    

2.2 Python

  • 单一样本T检验:

    from scipy.stats import ttest_1samp
    t_stat, p_value = ttest_1samp(data, mu)
    
  • 独立样本T检验:

    from scipy.stats import ttest_ind
    t_stat, p_value = ttest_ind(data1, data2)
    
  • 配对样本T检验:

    from scipy.stats import ttest_rel
    t_stat, p_value = ttest_rel(data1, data2)
    

2.3 R语言

  • 单一样本T检验:

    t_test <- t.test(data, mu = mu)
    
  • 配对样本T检验:

    t_test <- t.test(data1, data2, paired = TRUE)
    
  • 独立样本T检验:

    t_test <- t.test(data1, data2)
    

3. 单一样本T检验

假设有一组学生的期末考试成绩,并且学校规定的平均成绩为90分,想知道这组学生的成绩是否显著高于或低于学校的平均水平。

3.1 MATLAB

% 生成模拟数据:学生期末考试成绩
% 这些数据代表一组学生在期末考试中的成绩,学校规定的平均成绩是90分
data = [85, 88, 90, 87, 93, 86, 88]; % 样本数据
mu = 90; % 学校规定的平均成绩

% 执行单一样本t检验
[h, p, ci, stats] = ttest(data, mu);

% 显示结果
disp(['t-statistic: ', num2str(stats.tstat)]);
disp(['p-value: ', num2str(p)]);

% 根据p值判断检验结果
if p < 0.05
    disp('样本均值与总体均值有显著差异');
else
    disp('样本均值与总体均值无显著差异');
end

3.2 Python

import scipy.stats as stats

# 生成模拟数据:学生期末考试成绩
# 这些数据代表一组学生在期末考试中的成绩,学校规定的平均成绩是90分
data = [85, 88, 90, 87, 93, 86, 88]  # 样本数据
mu = 90  # 学校规定的平均成绩

# 执行单一样本t检验
t_stat, p_value = stats.ttest_1samp(data, mu)

# 显示结果
print(f't-statistic: {t_stat}, p-value: {p_value}')

# 根据p值判断检验结果
if p_value < 0.05:
    print('样本均值与总体均值有显著差异')
else:
    print('样本均值与总体均值无显著差异')

3.3 R语言

# 生成模拟数据:学生期末考试成绩
# 这些数据代表一组学生在期末考试中的成绩,学校规定的平均成绩是90分
data <- c(85, 88, 90, 87, 93, 86, 88) # 样本数据
mu <- 90 # 学校规定的平均成绩

# 执行单一样本t检验
t_test <- t.test(data, mu = mu)

# 显示结果
print(t_test)

# 根据p值判断检验结果
if (t_test$p.value < 0.05) {
    print('样本均值与总体均值有显著差异')
} else {
    print('样本均值与总体均值无显著差异')
}

4. 独立样本T检验

假设有两班学生的期末考试成绩,想比较这两班学生的成绩是否有显著差异。

4.1 MATLAB

% 生成模拟数据:两班学生期末考试成绩
% 班级1的成绩
data1 = [85, 88, 90, 87, 93, 86, 88];
% 班级2的成绩
data2 = [78, 82, 84, 80, 85, 81, 79];

% 执行独立样本t检验
[h, p, ci, stats] = ttest2(data1, data2);

% 显示结果
disp(['t-statistic: ', num2str(stats.tstat)]);
disp(['p-value: ', num2str(p)]);

% 根据p值判断检验结果
if p < 0.05
    disp('两班学生的成绩有显著差异');
else
    disp('两班学生的成绩无显著差异');
end

4.2 Python

import scipy.stats as stats

# 生成模拟数据:两班学生期末考试成绩
# 班级1的成绩
data1 = [85, 88, 90, 87, 93, 86, 88]
# 班级2的成绩
data2 = [78, 82, 84, 80, 85, 81, 79]

# 执行独立样本t检验
t_stat, p_value = stats.ttest_ind(data1, data2)

# 显示结果
print(f't-statistic: {t_stat}, p-value: {p_value}')

# 根据p值判断检验结果
if p_value < 0.05:
    print('两班学生的成绩有显著差异')
else:
    print('两班学生的成绩无显著差异')

4.3 R语言

# 生成模拟数据:两班学生期末考试成绩
# 班级1的成绩
data1 <- c(85, 88, 90, 87, 93, 86, 88)
# 班级2的成绩
data2 <- c(78, 82, 84, 80, 85, 81, 79)

# 执行独立样本t检验
t_test <- t.test(data1, data2)

# 显示结果
print(t_test)

# 根据p值判断检验结果
if (t_test$p.value < 0.05) {
    print('两班学生的成绩有显著差异')
} else {
    print('两班学生的成绩无显著差异')
}

5. 配对样本T检验

假设有一组学生的期中和期末考试成绩,想比较这些学生在两个时间点的成绩是否有显著差异。

5.1 MATLAB

% 生成模拟数据:学生期中与期末考试成绩
% 这些数据代表一组学生在期中和期末考试中的成绩
data1 = [85, 88, 90, 87, 93, 86, 88]; % 期中考试成绩
data2 = [88, 90, 91, 89, 94, 87, 90]; % 期末考试成绩

% 执行配对样本t检验
[h, p, ci, stats] = ttest(data1, data2);

% 显示结果
disp(['t-statistic: ', num2str(stats.tstat)]);
disp(['p-value: ', num2str(p)]);

% 根据p值判断检验结果
if p < 0.05
    disp('期中和期末考试成绩有显著差异');
else
    disp('期中和期末考试成绩无显著差异');
end

5.2 Python

import scipy.stats as stats

# 生成模拟数据:学生期中与期末考试成绩
# 这些数据代表一组学生在期中和期末考试中的成绩
data1 = [85, 88, 90, 87, 93, 86, 88]  # 期中考试成绩
data2 = [88, 90, 91, 89, 94, 87, 90]  # 期末考试成绩

# 执行配对样本t检验
t_stat, p_value = stats.ttest_rel(data1, data2)

# 显示结果
print(f't-statistic: {t_stat}, p-value: {p_value}')

# 根据p值判断检验结果
if p_value < 0.05:
    print('期中和期末考试成绩有显著差异')
else:
    print('期中和期末考试成绩无显著差异')

5.3 R语言

# 生成模拟数据:学生期中与期末考试成绩
# 这些数据代表一组学生在期中和期末考试中的成绩
data1 <- c(85, 88, 90, 87, 93, 86, 88) # 期中考试成绩
data2 <- c(88, 90, 91, 89, 94, 87, 90) # 期末考试成绩

# 执行配对样本t检验
t_test <- t.test(data1, data2, paired = TRUE)

# 显示结果
print(t_test)

# 根据p值判断检验结果
if (t_test$p.value < 0.05) {
    print('期中和期末考试成绩有显著差异')
} else {
    print('期中和期末考试成绩无显著差异')
}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号