生物统计与R语言(1)

简介

  生物统计学是生物数学中最早形成的一大分支,它是在用统计学的原理和方法研究生物学的客观现象及问题的过程中形成的,生物学中的问题又促使生物统计学中大部分基本方法进一步发展。生物统计学是应用统计学的分支,它将统计方法应用到医学及生物学领域,对于生物医学领域科研人员及在读学生,理解好统计学的基本方法及原理,才能真正准确的运用统计学的方法分析解释科研数据,得出更令人信服的结论,本系列专题将配合统计开源工具R语言系统介绍统计学在生物医学领域的原理及用法。

统计的含义
  • 统计到底是个啥?
    统计是将数据转化为可以帮助人们做决定的信息的工具。
  • 统计包括的内容
    研究设计
    数据收集
    数据管理
    统计分析
    • 描述型统计
    • 估计和推论
    • 预测
  • 解释
    重要概念
  • 总体(population):想要从重的出结论的群体。一般需要指定群体、地点和时间。栗子:2019年在山东省参加高考的学生。
  • 样本(sample):群体的子集。样本能够用来反应总体的信息。栗子:3万个随机选取的2019年在山东省参加高考的学生。
  • 参数(parameter):表示的是一个群体的数值特征。栗子:2019年在山东参加高考的学生的平均年龄。
  • 统计量(statistics):统计量是一个样本的数值特征。栗子:3万个随机选取的2019年在山东参加高考的的学生平均年龄。
  • 推论(inference):基于样本,得出关于群体的结论。栗子:2019年在山东省参加高考的学生平均年龄为18岁。
    基础统计推论方法
  • 点估计:
    样本中(3万个)山东省高考考生平均年龄为18岁。
    推断群体(整个山东省)高考考生的平均年龄为18岁。
  • 区间估计:
    山东高考考生的平均年龄的可信范围是多少?
    山东考生的平均年龄的95%的之心区间为16-20岁。
  • 假设检验
    样本是否提供充分的证据证明山东考生的平均年龄低于18岁。
    零假设:山东考生的平均年龄大于18岁。
    备则假设:山东考生平均年龄低于18岁。
    P< 0.05 拒绝零假设,有充分的证据证明山东考生平均年龄低于18岁。
    P> 0.05 无法拒绝零假设,没有充分的证据证明山东考生平均年龄低于18岁。
两大定律

大数定律:重要实验测试足够多,样本均值就会趋近于总体的期望值。
中心极限定理:许多小的随机因素的叠加总会使总体的分布趋近于正态分布;不管总体分布是什么,只要样本量足够大,就可以把样本的均值视为服从正态分布。

描述性统计
  • 数据类型(数据分析第一步)
    1.离散型变量:
    名词性(nominal)离散变量:二项分布变量(男 :女)
    顺序性(ordinal)离散变量:牙结石的分级
    2.连续型变量:
    正态分布(身高体重年龄)
  • 描述性统计 (数据分析第二步)
    1.离散型
    频数(frequency),比例(proportion),百分比(percent)
    列表(table)
    饼图(pie charts),条形图(bar charts)
    2.连续型
    数据的大小:平均数(mean),中位数(median),众数(mode),百分位数(percentile)
    数据的差异:样本方差(variance),标准差(standard deviation)
    数据分布形状:对称性(symmetry),偏斜程度(skewness),平缓程度(kurtosis)等。
    直方图(histogram),箱型图(boxplot)
    原因:了解分布情况,描述数据,统计模型的前提条件通常包括数据分布情况。
    3.两个变量之间的关系
    两个连续变量:身高和体重的关系;散点图
    一个离散一个连续的变量:性别与身高的关系;分组做箱型图
    两个离散变量:性别和吸烟之间的关系;表格(table)
    4.检查数据质量
    检查确实数据
    检查异常值
实操栗子
  • 数据生成

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    samsize = 1000
    age = rnorm(n=samsize, mean = 50, sd = 10)
    smoke = as.factor(c(rep(0,500),rep(1,500)))
    height = log2(rnorm(n=samsize, mean = 3.2, sd = 0.1))
    weight = 35 * height + rnorm(n=samsize, mean = 10, sd = 2)
    weight[82]=weight[82]+20 #outlier
    #plot(height, weight)
    final_data=data.frame(age,(smoke),height,weight)
    head(final_data)
    age X.smoke. height weight
    1 41.29590 0 1.640680 65.68003
    2 31.77156 0 1.767688 70.66953
    3 68.14326 0 1.654074 68.69767
    4 57.88502 0 1.648028 64.08887
    5 44.27702 0 1.625258 67.79374
    6 54.55705 0 1.676883 69.97073
  • 查看样本的个数和变量的个数

    1
    2
    3
    dim(final_data)
    [1] 1000 4
    boxplot(final_data$height)

  • 确定数据类型

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > is(final_data$age)
    [1] "numeric" "vector"
    > is(final_data$height)
    [1] "numeric" "vector"
    > is(final_data$weight)
    [1] "numeric" "vector"
    > is(final_data$X.smoke.)
    [1] "factor" "integer"
    [3] "oldClass" "numeric"
    [5] "vector" "data.frameRowLabels"

    age/height/weight是连续型
    smoke是离散型
  • 描述性统计
    连续型变量(height):
    数据大小和差异

    1
    2
    3
    4
    5
    6
    7
    8
    >summary(final_data$height)
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    1.512 1.653 1.680 1.681 1.713 1.794
    > sd(final_data$height)
    [1] 0.04622406
    > var(final_data$height)
    [1] 0.002136664
    >

数据分布情况

1
2
hist(final_data$height)
boxplot(final_data$height)



离散型变量:
吸烟情况
列表

1
2
3
4
> table(final_data$X.smoke.)

0 1
500 500

饼图

1
2
3
> prop1=sum(final_data$X.smoke.==1)/length(final_data$X.smoke.)
> prop0=sum(final_data$X.smoke.==0)/length(final_data$X.smoke.)
> pie(c(prop0,prop1),labels=c("non-smk","smk"))

两个变量之间的关系
两个连续变量(身高体重):
散点图

1
> plot(height,weight)


一个离散一个连续:
吸烟和身高

1
boxplot(final_data$height~final_data$X.smoke.)

  • 检查数据质量
    检查确实数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > is.na.data.frame(final_data)
    age X.smoke. height weight
    [1,] FALSE FALSE FALSE FALSE
    [2,] FALSE FALSE FALSE FALSE
    [3,] FALSE FALSE FALSE FALSE
    [4,] FALSE FALSE FALSE FALSE
    [5,] FALSE FALSE FALSE FALSE
    [6,] FALSE FALSE FALSE FALSE

    > sum(is.na(final_data))
    [1] 0

检查异常值

参考材料:
  • 《实用生物统计》第二版,李松岗
  • 实用生物统计课程 – Ying Shan

关注微信公众号,第一时间获取更新

-------------    本文结束  感谢您的阅读    -------------