经典统计分析包括了许多常用的统计方法和技术,用于数据的描述、推断和建模。本节将介绍经典统计分析方法(包括t检验、方差分析、卡方检验、线性回归)在R语言中的实现。

5.1.1  t检验

样本均值(sample mean),又称样本均数,是描述一组数据集中趋势的重要统计量。它是通过将一组数据的所有数值相加后,再除以这组数据的个数来计算的。在统计学中,方差是每个样本值与样本均值之差的平方的平均值。方差衡量了数据的离散程度,即数据点相对于均值的散布情况。标准差则是方差的平方根,表示数据相对于均值的平均偏离程度。标准差也是一种度量数据分散程度的重要指标。

t检验是一种统计方法,用于比较两个样本的均值是否存在显著差异。它基于样本均值和样本标准差,通过计算t值来判断两个样本均值是否显著不同。t检验适用于连续变量的独立样本或配对样本的比较,在医学领域中广泛使用。t检验有两种类型:单样本t检验和双样本t检验。

1. 单样本t检验

单样本t检验的目的是检验单样本的均值是否与已知总体的均值相等。

应用场景举例:在某偏远地区随机抽取若干名健康男子,检验其脉搏均值是否高于全体健康男子的平均水平;检验某一线城市全体高三学生的视力水平是否低于全国高三学生的视力水平。

在R语言中,可以使用t.test函数进行单样本t检验。具体步骤包括:

设置零假设(H0):假设检验的零假设通常是样本均值等于总体均值。

收集样本数据。

运行单样本t检验:使用t.test函数,指定样本数据和总体均值,得出检验结果,包括t值、p值和置信区间。

2. 双样本t检验

双样本t检验的目的是检验两个独立样本的均值是存在显著差异,要求两样本独立,服从正态分布或近似正态。

应用场景举例:为研究某种治疗儿童贫血的新药的疗效,以常规药作为对照,治疗一段时间后,检验施以新药的儿童的血红蛋白的增加量是否比常规药的大;检验两种药物对治疗高血压的效果,检验两组药物的降压水平是否存在显著差异。

在R语言中,也可以使用t.test函数进行双样本t检验。具体步骤包括:

设置零假设(H0):假设检验的零假设通常是两个样本的均值相等。

收集两组独立样本数据。

运行双样本t检验:使用t.test函数,指定两个样本数据,得出检验结果,包括t值、p值和置信区间。

在执行t检验时,关键的输出包括t值、自由度、p值和置信区间。p值通常用来判断检验结果的显著性,如果p值小于显著性水平(通常为0.05),则可以拒绝零假设,认为两个样本的均值存在显著差异。执行t检验的示例R代码如下:

#单样本t检验

set.seed(123)

blood_pressure <- rnorm(30, mean = 120, sd = 10) #创建数据blood_pressure

#执行单样本t检验,比较样本blood_pressure的均值与总体均数mu=130的差异

t_test_single_blood_pressure <- t.test(blood_pressure, mu = 130)

#输出单样本t检验结果

print(t_test_single_blood_pressure)

#双样本t检验

set.seed(123)

baseline_blood_sugar <- rnorm(20, mean = 100, sd = 15) #创建数据baseline_blood_sugar

endline_blood_sugar <- rnorm(20, mean = 120, sd = 15) #创建数据endline_blood_sugar

#执行双样本t检验,比较样本baseline_blood_sugar和endline_blood_sugar均值的差异

t_test_double_blood_sugar <- t.test(baseline_blood_sugar, endline_blood_sugar)

#输出双样本t检验结果

print(t_test_double_blood_sugar)

运行结果如图5-1所示。该图展示了单样本和双样本t检验的结果,其中p值分别为2.431e-06和0.0003,均小于0.05。结果提示,blood_pressure的均值与总体均数130之间存在显著差异,baseline_blood_sugar与endline_blood_sugar之间均值也存在显著差异,且这种差异具有统计学意义。

图5-1

总的来说,t检验是一种常用的假设检验方法,用于比较样本均值之间的差异。在R语言中,使用t.test函数进行t检验非常方便,能够帮助用户快速、准确地进行显著性检验。

5.1.2  方差分析

方差分析(Analysis of Variance,简称ANOVA),由英国统计学家R.A.Fisher首创,为纪念Fisher故以“F”命名,所以方差分析又称“F检验”。它用于两个及两个以上样本均值差异的显著性检验。

方差分析中使用频率最高的是单因素方差分析。它用于分析一类定类数据与定量数据之间的差异性,且定类数据通常为多分类数据。例如,分析不同班级(1班、2班、3班)学习成绩之间的差异时,可以使用单因素方差分析来比较这3个班级学习成绩均值的差异(独立样本t检验只能进行两组数据之间均值差异的比较)。

在R语言中,可以使用stats包中的aov函数和car包中的Anova函数进行单因素方差分析。具体步骤包括:

设置零假设(H0):假设检验的零假设通常是所有组的均值相等。

收集各组样本数据。

运行单因素方差分析:使用aov函数指定因变量和组变量,使用summary函数获取方差分析的结果,包括F统计量、自由度和p值。

在方差分析中,关键的输出值为F值和p值。F值用于判断组间均值差异是否显著;当p值小于显著性水平(通常为0.05)时,则可以拒绝零假设,认为组间均值存在显著差异。执行方差分析的示例R代码如下:

#创建数据框(包含3个组别的计量资料)

data <- data.frame(

  RecoveryTime = c(10, 12, 8, 9, 11, 14, 13, 7, 6, 5,11), #恢复时间

  Treatment = factor(c("TreatmentA", "TreatmentB", "TreatmentC", "TreatmentA",

                       "TreatmentB", "TreatmentC", "TreatmentA", "TreatmentB",

                       "TreatmentC", "TreatmentA", "TreatmentB")))#治疗方法

#进行方差分析

aov_result <- aov(RecoveryTime ~ Treatment, data = data)

summary(aov_result)

运行结果如图5-2所示,该图展示了方差分析结果,通过summary(aov())计算得出F值为0.116和p值为0.892。p值大于0.05说明治疗方法对恢复时间没有显著影响。

图5-2

总的来说,方差分析是一种常用的统计方法,用于比较组间均值是否有显著差异。在R语言中,使用aov函数和Anova函数进行方差分析非常方便,能够帮助用户快速、准确地进行组间差异比较。

5.1.3  卡方检验

卡方检验是一种用于检验两个或多个分类变量之间是否存在相关性的统计方法。卡方检验适用于分析分类数据,通常用于检验观测频数(frequency)与期望频数之间的差异是否显著。频数又称“次数”,是指变量值中代表某种特征的数(标志值)出现的次数。在R语言中,可以使用基本的chisq.test函数进行卡方检验。以下是关于卡方检验的详细介绍。

在单样本卡方检验中,我们测试一个分类变量的频数是否符合某种理论分布。假设检验的零假设是观测频数符合某种预期的分布。在R语言中,可以使用chisq.test函数指定观测频数和理论频数的期望比例,得出卡方统计量和p值。

在卡方检验中,关键的输出包括卡方统计量、自由度和p值。p值通常用来判断检验结果的显著性。如果p值小于显著性水平(通常为0.05),则可以拒绝零假设,认为观测频数与期望频数存在显著差异,或者两个分类变量之间存在相关性。

执行卡方检验的示例R代码如下:

#创建数据框

data <- data.frame(

  PatientID = 1:80,

  Treatment = c(rep("TreatmentA", 40), rep("TreatmentB", 40)),

  CureStatus = c(rep("Cured", 30), rep("Cured", 30), rep("Not Cured", 20))

)

#创建列联表

table_data <- table(data$Treatment, data$CureStatus)

#进行卡方检验

chi_result <- chisq.test(table_data)

#输出结果

print(chi_result)

代码的运行结果如图5-3所示,该图展示了卡方检验的结果。通过chisq.test函数计算得出的卡方统计量的X-squared值为24.067、p值为9.306e-07。p值小于0.05,说明治疗方法和治愈结果之间存在显著关联。

图5-3

总的来说,卡方检验是一种常用的统计方法,用于检验分类变量之间的相关性,能够帮助研究者在数据分析中进行合理的推断。在R语言中,使用chisq.test函数进行卡方检验非常方便,能够快速准确地进行相关性分析。

5.1.4  简单线性回归分析

简单线性回归分析是统计学中经常使用的一种方法,用于建立和评估一个自变量对一个连续因变量的线性关系。简单线性回归分析通过拟合一条直线来描述自变量与因变量之间的关系,以预测和解释因变量的变化。下面是关于简单线性回归分析的详细介绍:

简单线性回归模型可以表示为:

Y = β0 + β1X + ε

其中,Y是因变量(响应变量)、X是自变量、β0是截距项、β1是斜率、ε是误差项(随机误差)。

回归分析的目标是通过估计截距和斜率,拟合一条最优的直线来描述自变量和因变量之间的关系。通常使用最小二乘法来估计回归系数,使得预测值与实际值的残差平方和最小化。简单线性回归模型可以用来预测因变量的取值,也可以用来推断自变量和因变量之间的关系程度。

在R语言中,可以使用lm()函数进行简单线性回归分析。具体步骤包括:

收集自变量和因变量的数据。

运行lm()函数,指定因变量与自变量,得出回归系数、拟合直线及相关统计指标。

通过summary()函数获取回归模型的摘要统计信息,包括截距、斜率、R方值、t值和p值等。

简单线性回归分析能够帮助研究者理解和预测变量之间的关系,它提供了一种简单而有效的工具来解释和探究数据背后的模式和规律。执行简单线性回归分析的示例R代码如下:

#创建数据框

data <- data.frame(

  Weight = c(61, 75, 83, 92, 100),  #体重,单位:千克

  BloodPressure = c(110, 123, 130, 150, 160)  #血压,单位:毫米汞柱

)

#进行简单线性回归分析

model <- lm(BloodPressure ~ Weight, data = data)

#查看模型输出结果

summary(model)

lm()函数中的“BloodPressure ~ Weight”表示正在拟合一个模型,其中血压(BloodPressure)是因变量,体重(Weight)是自变量,“data = data”指定了包含数据的数据框。Summary()函数将提供模型的详细摘要,包括回归系数、截距、R平方值、F统计量和p值等。这些统计量可以帮助我们了解模型的拟合情况和变量之间的线性关系是否显著。代码运行结果如图5-4所示,该图展示了简单线性回归的结果。

图5-4

从图5-4中可以看到,截距(Intercept)是26.3778,斜率(Weight的系数)是1.3166,这表示每增加1千克体重,血压平均增加1.3166毫米汞柱;p值为0.02809,小于0.05,表明体重与血压之间存在显著的线性关系;R平方值(Multiple R-squared)为0.965,表示模型解释了96.5%的血压变异。

https://www.cnblogs.com/brucexia/p/18466799

R语言经典统计分析的更多相关文章

  1. R语言- 基本统计分析

    目的: 1.描述性统计分析 2.频数表和;列连表 3.相关系数和协方差 4.t检验 5.非参数统计 在上一节中使用了图形来探索数据,下一步就是给出具体的数据来描述每个变量的分布和关系 1.描述性统计分 ...

  2. R语言介绍

    R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境,是贝尔实验室(Bell Laboratories)的Rick Becker.John Chambers和Allan Wilks开发的S语言 ...

  3. 统计计算与R语言的资料汇总(截止2016年12月)

    本文在Creative Commons许可证下发布. 在fedora Linux上断断续续使用R语言过了9年后,发现R语言在国内用的人逐渐多了起来.由于工作原因,直到今年暑假一个赴京工作的机会与一位统 ...

  4. SQL Server 2016将内置R语言?

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:随着大数据成为一个BuzzWord,和大数据相关的技术也变得越来越火热,其中就包括R语 ...

  5. R语言的前世今生(转)

    最近因病休养在家,另外也算是正式的离开Snack Studio.终于有了大把可以自由支配的时间.可以自主的安排.最近闲暇的时间总算是恶补了不少前段时间行业没有时间关注的新事物.看着行业里引领潮流的东西 ...

  6. R语言学习路线和常用数据挖掘包(转)

    对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来.当然,这不是最好的学习方式,最好的方式是——看书.目前,市面上介绍R语言的 ...

  7. Mac下R语言环境搭建

    Mac下R语言环境搭建 博主在数据分析的时候一直用的python(MATLAB太重了),最近跟其他搞学术的人合作,需要用一下R语言,所以也打算顺便学习一下R. R语言简介 R语言是用于统计分析,图形表 ...

  8. 用R语言分析与预測员工离职

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/kMD8d5R/article/details/83542978 https://mmbiz.qpic ...

  9. SQL Server 2016将内置R语言

    题记:随着大数据成为一个BuzzWord,和大数据相关的技术也变得越来越火热,其中就包括R语言.而据说SQL Server 2016将会内置R语言支持? R语言作为一个存在很久的语言,在大数据热炒之后 ...

  10. R语言实战(三)基本图形与基本统计分析

    本文对应<R语言实战>第6章:基本图形:第7章:基本统计分析 =============================================================== ...

随机推荐

  1. [USACO09JAN] Safe Travel G 题解

    UPDATE on 2024.5.10 删去左偏树代码中令人误解的 fa 数组. 前话 题目链接:洛谷. 貌似别人都是使用并查集维护的方法,然而由于排序.最短路等算法瓶颈,以下令 \(n\) 和 \( ...

  2. AtCoder Beginner Contest 312

    AtCoder Beginner Contest 312 A - Chord (atcoder.jp) #include <bits/stdc++.h> #define endl '\n' ...

  3. 《重学Java设计模式》笔记——建造者模式

    1. 建造者模式可以解决什么问题 我家里有各种形状的瓷器,盘子或者碗.虽然形状不同,但是所用的材料基本上是一样的,比如土.水.釉.彩这些基本的东西. 但是做不同款式的瓷器,方法是不同的.假如说我现在已 ...

  4. loj6669 Nauuo and Binary Tree 题解

    https://loj.ac/p/6669 赛时做法 先 \(n-1\) 次问出深度 逐层考虑.slv(vector<int> a,vector<int> b) 表示在点集 \ ...

  5. 【2】Kaggle 医学影像数据读取

    赛题名称:RSNA 2024 Lumbar Spine Degenerative Classification 中文:腰椎退行性病变分类 kaggle官网赛题链接:https://www.kaggle ...

  6. WinUI 3学习笔记(1)—— First Desktop App

    随着Visual Studio 2019 16.10版本的正式发布,创建WinUI 3的APP对我们来说,已不存在任何的难度.本篇我们就试着来一探究竟,看看WinUI 3 APP到底是个啥玩意,能不能 ...

  7. SLAB:华为开源,通过线性注意力和PRepBN提升Transformer效率 | ICML 2024

    论文提出了包括渐进重参数化批归一化和简化线性注意力在内的新策略,以获取高效的Transformer架构.在训练过程中逐步将LayerNorm替换为重参数化批归一化,以实现无损准确率,同时在推理阶段利用 ...

  8. Java——计算1~N之间所有奇数之和

    2024/07/15 1.题目 2.解题 1.题目 2.解题 import java.util.Scanner; public class Main { public static void main ...

  9. VMware 安装 OpenWrt

    准备 OpenWrt VMDK 固件映像 你可以直接下载 VMDK 版本的 OpenWrt 固件映像,或者自己构建一个,或者从 IMG 映像文件转换.一般来说 IMG 映像文件较为容易获取,因此下面介 ...

  10. Java Swing Loading转圈的进度提示框

    Java Swing Loading转圈的进度提示框 具体只需要两个类 AnimatedPanel.java InfiniteProgressPanel.java 前因:我们开发的web应用,有个奇葩 ...