16 假设检验简介

16 假设检验简介

假设检验步骤

假设检验是统计学中用来判断一个假设成立的过程。通过对样本数据的分析,我们可以作出关于总体参数的推断。

步骤一:提出假设

在进行假设检验时,首先需要提出两个假设:

  • 零假设 ($H_0$): 一般为无效性假设,表示不存在差异或影响。
  • 备择假设 ($H_1$或$H_a$): 表示存在差异或影响。

例如,假设我们想检验某种药物是否有效,我们可以设置:

  • $H_0$: 药物对病人没有影响。
  • $H_1$: 药物对病人有影响。

步骤二:选择显著性水平

选择一个显著性水平($\alpha$),通常常用的值为0.05或0.01,它表示我们愿意接受的犯第一类错误(错误拒绝零假设)的概率。

步骤三:选择适当的检验方法

根据数据类型和假设的性质,选择合适的假设检验方法。例如:

  • 当数据服从正态分布时,选择t检验或者z检验
  • 当数据为分类数据时,选择卡方检验

步骤四:计算测试统计量

通过公式计算测试统计量。以单样本t检验为例,计算的公式为:

$$
t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}}
$$

其中:

  • $\bar{x}$ 是样本均值
  • $\mu_0$ 是零假设下的总体均值
  • $s$ 是样本标准差
  • $n$ 是样本大小

例子

假设我们有一组药物治疗后的病人恢复时间数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
from scipy import stats

# 示例数据:治疗后恢复时间
recovery_times = [30, 32, 28, 35, 34]
mu_0 = 31 # 零假设均值

# 计算样本均值和标准差
x_bar = np.mean(recovery_times)
s = np.std(recovery_times, ddof=1)
n = len(recovery_times)

# 计算t统计量
t_stat = (x_bar - mu_0) / (s / np.sqrt(n))

步骤五:确定临界值或p值

使用统计表格或者软件计算出对应于统计量的p值,或直接查找临界值。

  • 如果 p值 ≤ $\alpha$,拒绝零假设;
  • 如果 p值 > $\alpha$,无法拒绝零假设。

步骤六:作出决策

根据步骤五的结果,得出关于零假设的结论。

例子

继续上面的例子,我们通过计算得到的p值如下:

1
2
3
4
5
6
7
# 计算p值
p_value = 1 - stats.t.cdf(t_stat, df=n-1) # 单尾检验

if p_value <= 0.05:
print("拒绝零假设,药物有效!")
else:
print("无法拒绝零假设,药物无效。")

步骤七:撰写报告

最后,将你的研究结果记录下来,包括提出的假设、使用的方法、得到的统计量和p值,以及最终的结论。确保报告内容清晰、准确。


通过遵循这些步骤,您可以系统地进行假设检验,以验证您的研究假设。

17 常见的假设检验方法

17 常见的假设检验方法

在统计学中,假设检验是用于判断样本数据是否支持某个关于总体的假设的过程。以下是一些常见的假设检验方法,结合案例和代码进行讲解。

Z检验

Z检验通常用于样本量较大(一般$n > 30$)且知道总体标准差的情况。其主要用于检验总体均值是否等于某个特定值。

案例

假设某公司声称其员工的平均工资为5000元,现随机选取了50名员工,计算出他们的平均工资为5200元,标准差为1000元。我们需要检验这个声称是否合理。

步骤

  1. 制定假设

    • 零假设$H_0$: $\mu = 5000$
    • 备择假设$H_1$: $\mu \neq 5000$
  2. 计算Z值
    $$ Z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}} = \frac{5200 - 5000}{1000 / \sqrt{50}} $$

  3. 查找临界值
    通常选择显著性水平$\alpha = 0.05$,查找相应的Z临界值(两尾检验)。

  4. 决定
    比较计算得到的Z值与临界值,决定是否拒绝$H_0$。

Python代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
import scipy.stats as stats

# 数据
sample_mean = 5200
population_mean = 5000
std_dev = 1000
n = 50

# Z检验
z_value = (sample_mean - population_mean) / (std_dev / np.sqrt(n))
p_value = 2 * (1 - stats.norm.cdf(abs(z_value)))

print(f"Z值: {z_value}, P值: {p_value}")

t检验

t检验适用于样本量较小(一般$n \leq 30$)或不知道总体标准差的情况。它用于检验总体均值是否等于某个特定值。

案例

假设一所学校希望知道新教学法是否提高了学生的考试成绩。选取10名学生,成绩分别为85, 90, 88, 91, 92, 94, 89, 87, 93, 86,已知总体均值为80。

步骤

  1. 制定假设

    • 零假设$H_0$: $\mu = 80$
    • 备择假设$H_1$: $\mu \neq 80$
  2. 计算t值
    $$ t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}} $$
    其中$s$为样本标准差。

  3. 查找t临界值
    根据自由度$n-1$查找对应的t临界值。

  4. 决定
    比较计算得到的t值与临界值,决定是否拒绝$H_0$。

Python代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import scipy.stats as stats

# 数据
scores = np.array([85, 90, 88, 91, 92, 94, 89, 87, 93, 86])
sample_mean = np.mean(scores)
population_mean = 80
n = len(scores)
std_dev = np.std(scores, ddof=1)

# t检验
t_value = (sample_mean - population_mean) / (std_dev / np.sqrt(n))
p_value = 2 * (1 - stats.t.cdf(abs(t_value), df=n-1))

print(f"t值: {t_value}, P值: {p_value}")

卡方检验

卡方检验用于检验分类数据的分布是否符合预期,或检验两个分类变量之间是否独立。

案例

假设我们想检验某种药物对患者回复状态的影响。我们有两个分类:药物组和对照组,观察到如下数据:

好转 不好转
药物组 30 10
对照组 20 20

步骤

  1. 制定假设

    • 零假设$H_0$: 药物组和对照组的好转率无显著差异。
    • 备择假设$H_1$: 药物组和对照组的好转率有显著差异。
  2. 构造卡方统计量
    $$ \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} $$
    其中$O_i$为观察频数,$E_i$为期望频数。

  3. 决定
    查找相应的卡方临界值,计算得到的卡方值与临界值进行比较。

Python代码示例

1
2
3
4
5
6
7
8
9
import scipy.stats as stats

# 观察频数
observed = np.array([[30, 10], [20, 20]])

# 卡方检验
chi2, p_value, dof, expected = stats.chi2_contingency(observed)

print(f"卡方值: {chi2}, P值: {p_value}, 期望频数: {expected}")

结论

假设检验是一种重要的统计工具,帮助我们根据样本数据评估总体特征。熟练掌握上述常见的假设检验方法,有助于在实际数据分析中做出合理的推论与决策。

18 p值解读

18 p值解读

在统计学中,p值是一个非常重要的概念,它帮助我们判断统计检验的结果是否具有显著性。理解p值可以帮助你更好地解读实验结果或观察数据之间的差异。

什么是p值?

p值是指在原假设为真的前提下,观察到测试统计量或更极端值的概率。简单来说,p值越小,意味着观察到的结果与原假设之间的差异越显著。

p值的意义

  • p值 < 0.05:通常被认为是统计显著的,意味着我们有足够的证据拒绝原假设。
  • p值 >= 0.05:通常被认为是不显著的,我们没有足够的证据去拒绝原假设。

案例分析

假设你在做一个药物效果的研究,想知道新药A是否比安慰剂B能有效降低血压。你随机分配了两组人,一组服用药物A,另一组服用安慰剂B。经过测试后,你得到了以下结果:

  • 药物A组的平均血压下降了5 mmHg,标准差为2 mmHg。
  • 安慰剂B组的平均血压下降了2 mmHg,标准差为1.5 mmHg。

你进行了t检验并计算出了p值为0.03。根据此结果,你可以这样解读:

  • 由于p值 < 0.05,你可以认为药物A的效果显著优于安慰剂B。因此,你有理由拒绝原假设(药物A的效果与安慰剂无差异)。

代码示例

下面是使用Python进行t检验的代码示例,假设我们有两组的血压数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np
from scipy import stats

# 药物A组数据
group_A = np.array([120, 118, 117, 115, 116])
# 安慰剂B组数据
group_B = np.array([122, 121, 123, 124, 125])

# 进行t检验
t_stat, p_value = stats.ttest_ind(group_A, group_B)

print("t统计量:", t_stat)
print("p值:", p_value)

如果运行上述代码得到的p值为0.03,根据我们之前的解读,这表明药物A的效果显著。

结论

p值是统计分析中不可或缺的一个工具,它帮助我们在实验和观察数据时做出科学的判断。但是,不要仅仅依赖p值来做决策,理解p值背后的含义及其与实验设计和数据质量的关系是同样重要的。