假设检验 - 用统计模型解释数据

发布日期:2026-07-11 11:30:06   来源 : 杭州电子商务研究院    浏览量 :7
杭州电子商务研究院 发布日期:2026-07-11 11:30:06  
7

介绍

建立预测模型或开展数据科学研究取决于制定假设并使用统计测试得出结论。在本指南中,您将了解如何使用统计编程语言“R”执行这些测试。

本指南涵盖了最广泛使用的推断统计技术,如下所示:

  1. 单样本T检验

  2. 独立 T 检验

  3. 卡方检验

  4. 相关性检验

  5. 方差分析 (ANOVA)

我们将从加载数据开始。

数据

在本指南中,我们将使用包含 200 个观测值和 10 个变量的贷款申请人的虚构数据,如下所述:

  1. Marital_status:申请人是否已婚(“是”)或未婚(“否”)。

  2. Is_graduate:申请人是否是毕业生(“是”)或不是(“否”)。

  3. 收入:申请人的年收入(美元)。

  4. Loan_amount:提交申请的贷款金额(以美元计)。

  5. Credit_score:申请人的信用评分是好(“好”)还是不好(“坏”)。

  6. authorization_status:贷款申请是否被批准(“是”)或未被批准(“否”)。

  7. 投资:申请人申报的股票和共同基金投资(以美元计)。

  8. 性别:申请人是“女性”还是“男性”。

  9. 年龄:申请人的年龄。

  10. work_exp:工作经验(年数)。

让我们首先加载所需的库和数据。

      library(readr)
library(dplyr)
library(mlbench)
 
#loading the data
df <- read_csv("data_test.csv")
glimpse(df)
    

输出:

      Observations: 200
Variables: 10
Marital_status  <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes"...
Is_graduate 	<chr> "No", "No", "No", "No", "No", "No", "No", "No", "No", ...
Income      	  <int> 72000, 64000, 80000, 76000, 72000, 56000, 48000, 72000...
Loan_amount  <int> 70500, 70000, 275000, 100500, 51500, 69000, 147000, 61...
Credit_score	<chr> "Bad", "Bad", "Bad", "Bad", "Bad", "Bad", "Bad", "Bad"...
approval_status <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes", "Yes"...
Investment  	<int> 117340, 85340, 147100, 65440, 48000, 136640, 160000, 9...
gender      	<chr> "Female", "Female", "Female", "Female", "Female", "Fem...
age         	  <int> 34, 34, 33, 34, 33, 34, 33, 33, 33, 33, 34, 33, 33, 33...
work_exp  	<dbl> 9.0, 8.0, 10.0, 9.5, 9.0, 7.0, 6.0, 9.0, 9.0, 11.0, 9....
    

关键术语

在进行统计测试之前,最好先了解一些重要的术语。

  1. 零假设和备择假设

本指南中的统计检验依赖于检验零假设,该零假设针对每种情况都是特定的。

零假设假定两个或多个变量之间不存在关系。例如,对于两个组,零假设假定两个变量之间没有相关性或关联。

备择假设只是零假设的相反面。

  1. P 值

对于任何统计检验,p 值都是用来评估我们是否会拒绝或无法拒绝原假设的统计数据。它被定义为获得等于或超过数据中观察到的结果的概率。

  1. 决策规则

然后将通过统计检验确定的 p 值与预定值“alpha”(通常取为 0.05)进行比较。

决策规则是:如果检验的 p 值小于 0.05,则我们拒绝原假设,但如果检验的 p 值大于或等于 0.05,则我们无法拒绝原假设。

单样本 T 检验

单样本 t 检验的理念是将向量的平均值与理论平均值进行比较。在我们的数据中,我们将采用“收入”变量,并根据理论平均值对其进行评估。

根据美国人口普查局的年度年中人口估计,2018 年美国的人均个人收入为 53,820 美元。我们将测试申请人的平均收入是否为 53,820 美元。

单样本 t 检验的一个重要假设是变量“收入”的分布应为正态分布。下面的代码行创建了一个直方图,它似乎近似于正态分布。

      hist(df$Income, main='Annual Income of Loan Applicants in USD',xlab='Income(USD)')
    

输出:

      ![image name](https://i.imgur.com/AEpv8FF.png)
    

由于满足正态性假设,我们将继续进行 t 检验。在“R”中,t.test函数用于执行此任务,该任务在下面的代码行中完成。第一个参数是数字向量“收入”,而第二个参数是理论平均值,用符号“mu”表示。

      t.test(df$Income, mu=53820)
    

输出:

      One Sample t-test
 
data:  df$Income
t = 11.871, df = 199, p-value < 2.2e-16
 
alternative hypothesis: true mean is not equal to 53820
 
95 percent confidence interval: 61266.55, 64233.45
 
sample estimates: mean of x: 62750
    

输出解释

上面的输出打印了 t 统计量(t = 11.871)和自由度,即 199(n - 1)。这里的 p 值接近 0,小于 0.05,这意味着我们将拒绝总体平均值等于 53,820 美元的零假设。

另一点需要注意的是“备选假设:真实平均值不等于 53820”。这对应于双侧备选假设。如果我们想使其成为单侧 t 检验,那么我们将在引号中添加参数“小于”或“大于”,这将定义备选假设的方向。

独立 T 检验

在本测试中,我们将比较两个独立组,看看它们的均值是否相等。所研究的变量是“work_exp”变量,我们将测试男性和女性申请人的工作经验是否相同。

下面的第一行和第二行代码分别创建了两个向量,其中包含女性和男性申请人的工作经验。我们还必须测试这两个组都呈正态分布的假设。这在下面的第三行到第五行代码中完成,它们创建了两个直方图。直方图表明这两个变量都近似呈正态分布。

      f_workexp = df$work_exp[df$gender=='Female']
m_workexp = df$work_exp[df$gender=='Male']
 
#histogram
par(mfrow=c(1,2))
hist(f_workexp)
hist(m_workexp)
    

输出:

      ![image name](https://i.imgur.com/5dnhPCi.png)
    

由于满足正态性假设,我们将使用下面的代码行执行 t 检验。

      t.test(f_workexp, m_workexp)
    

输出:

      Welch Two Sample t-test
 
data:  f_workexp and m_workexp
t = -0.29465, df = 25.088, p-value = 0.7707
 
alternative hypothesis: true difference in means is not equal to 0
 
95 percent confidence interval: -0.7904954, 0.5925894
 
sample estimates: mean of x mean of y: 7.832865, 7.931818
    

输出解释

由于 p 值 0.7707 大于 0.05,我们无法拒绝这两组平均值相等的零假设。换句话说,男性和女性申请人的工作经验没有显著差异。

卡方独立性检验

卡方独立性检验用于确定两个或多个分类变量之间是否存在关联。在我们的案例中,我们想测试申请人的婚姻状况是否与批准状态有任何关联。

第一步是在研究的变量之间创建一个双向表,这在下面的代码行中完成。

      mar_approval <-table(df$Marital_status, df$approval_status)
mar_approval
    

输出:

      No   Yes
  Divorced     31     29
  No   	         66     10
  Yes  	         52     12
    

下一步是使用下面的代码行生成预期计数。

      chisq.test(mar_approval, correct=FALSE)$expected
    

输出:

      No        Yes
  Divorced    44.70    15.30
  No   	        56.62     19.38
  Yes  	        47.68     16.32
    

我们现在准备使用chisq.test函数运行独立性测试,如下面的代码行所示。

      chisq.test(mar_approval, correct=FALSE)
    

输出:

      Pearson's Chi-squared test
 
data:  mar_approval
X-squared = 24.095, df = 2, p-value = 5.859e-06
    

输出解释

由于 p 值小于 0.05,我们拒绝申请人的婚姻状况与批准状态无关的原假设。

相关性检验

相关性测试用于确定两个定量变量之间是否存在线性关系以及关系的程度。在我们的案例中,我们想从统计上测试申请人的投资和工作经验之间是否存在相关性。

第一步是通过散点图来可视化关系,这在下面的代码行中完成。

      plot(df$Investment,df$work_exp, main="Correlation between Investment Levels and Work Experience", xlab="Work experience in years", ylab="Investment in USD")
    

输出:

      ![image name](https://i.imgur.com/pip40R6.png)
    

上图表明两个变量之间不存在线性关系。我们可以通过计算相关系数来量化这种推论,如下所示。

      cor(df$Investment, df$work_exp)
    

输出:

      1] 0.06168653
    

0.06 的值表明两个变量之间存在正但弱的线性关系。让我们通过相关性测试进一步确认这一点,该测试在“R”中使用cor.test()函数完成

基本语法是***cor.test(var1, var2, method = “method”)***,默认方法是“pearson”。这是通过下面的代码行完成的。

      cor.test(df$Investment, df$work_exp)
    

输出:

      Pearson's product-moment correlation
 
data:  df$Investment and df$work_exp
t = 0.86966, df = 198, p-value = 0.3855
 
alternative hypothesis: true correlation is not equal to 0
 
95 percent confidence interval: -0.07771964, 0.19872675
 
sample estimates: cor 0.06168653
    

输出解释

由于p值0.3855大于0.05,我们无法拒绝申请人的投资与其工作经验之间的关系不显著的原假设。

<h2 class="cmp-t
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据