美文网首页Data Analysis for the Life Sciences
DALS001-数据准备(Getting Started)

DALS001-数据准备(Getting Started)

作者: backup备份 | 来源:发表于2019-07-28 13:00 被阅读0次

title: DALS001-数据准备(Getting Started)
date: 2019-07-21 12:0:00
type: "tags"
tags:

  • R包
    categories:
  • 生物统计

前言

本书是《Data Analysis for the Life Sciences》这本书的读书笔记。

image

此书一共分了10部分,分别为:

  • 数据准备(Getting Started)
  • 统计推断(Inference)
  • 数据挖掘(Exploratory Data Analysis)
  • 矩阵代数(Matrix Algebra)
  • 线性模型(Linear Models)
  • 高维数据推断(Inference For high Dimensional Data)
  • 统计模型(Statistical Models)
  • 距离与降低(Distance and Dimension Reduction)
  • 基础机器学习(Basic Machine Learning)
  • 批次效应(Batch Effects)

由于这本书是为生命科学相关专业而写的,考虑到相关专业学生数理功底太弱,书中并没涉及很复杂的数学与统计学知识,还是很好理解的。

R语言包与原始数据准备

这本书中涉及到的统计学原理与案例分析都是通过R语言实现的,作者也把相应的脚本与数据放到了Github上。

这里先安装几个R包,如下所示:

library(devtools)
install_github("genomicsclass/dagdata")
dir <- system.file(package = "dagdata")
list.files(dir)

加载原始数据 ,如下所示:

> dir <- system.file(package = "dagdata")
> list.files(dir)
[1] "data"        "DESCRIPTION" "extdata"     "help"        "html"        "Meta"       
[7] "NAMESPACE"   "script"   

上面的代码使用了到几个包与命令,其中devtool包中的install_github()函数用于直接从Github下载相应包,以前的笔记中已经说明了这个包的用法《R语言笔记之包的操作与内置数据集》

另外还有两个函数,其中system.file()函数的功能是:发现包的完整路径名,例如上面的变量dir的输出就是如下所示:

> dir
[1] "C:/Users/20161111/Documents/R/win-library/3.5/dagdata"

list.files()函数的功能是列出相应路径下的文件,如下所示:

> list.files(dir)
[1] "data"        "DESCRIPTION" "extdata"     "help"        "html"        "Meta"       
[7] "NAMESPACE"   "script" 

使用list.files()函数还能继续列举出目录下一层目录中的内容,例如现在我们列出extdata这个目录中的内容,如下所示:

> list.files(file.path(dir,"extdata"))
[1] "admissions.csv"               "astronomicalunit.csv"        
[3] "babies.txt"                   "femaleControlsPopulation.csv"
[5] "femaleMiceWeights.csv"        "mice_pheno.csv"              
[7] "msleep_ggplot2.csv"           "README"                      
[9] "spider_wolff_gorb_2013.csv" 

其中这里面用到file.path()函数,它的功能是将字符串连接起来,形成路径,如下所示:

> file.path(dir,"extdata")
[1] "C:/Users/20161111/Documents/R/win-library/3.5/dagdata/extdata"

现在加载原始数据,如下所示:

filename <- file.path(dir,"extdata/femaleMiceWeights.csv")
dat <- read.csv(filename)
# input raw data
head(dat)
str(dat)

数据如下所示:

> head(dat)
  Diet Bodyweight
1 chow      21.51
2 chow      28.14
3 chow      24.04
4 chow      23.45
5 chow      23.68
6 chow      19.79
> str(dat)
'data.frame':   24 obs. of  2 variables:
 $ Diet      : Factor w/ 2 levels "chow","hf": 1 1 1 1 1 1 1 1 1 1 ...
 $ Bodyweight: num  21.5 28.1 24 23.4 23.7 ...

从数据我们可以知道,这是一个数据框,有2列,第1列是小鼠的包含情况,分别是chow(正常组),hf(高脂组,就是high fat的缩写),第2列的体重,从常识可以知道,单位是g(一只标准的小鼠体重是18-22g)。

以上是原始数据的下载过程,涉及到的知识点为:R包的下载与加载,另外,也可以通过downloader包来下载原始数据,整个操作如下所示:

install.packages("downloader")
url <- "https://raw.githubusercontent.com/genomicsclass/dagdata/master/inst/extd\
ata/femaleMiceWeights.csv"
filename <- "femaleMiceWeights.csv"
download(url, destfile=filename)

这一过程不再演示,跟前面的目的是一样,都是下载原始数据。

有了原始数据后,现在过程一下数据,我们捏造chow组的小鼠数据,如下所示:

library(dplyr)
chow <- filter(dat, Diet =="chow")
# Extract chow gropu from raw data of dat 
head(chow)
str(chow)

结果如下所示:

> chow <- filter(dat, Diet =="chow")
> str(chow)
'data.frame':   12 obs. of  2 variables:
 $ Diet      : Factor w/ 2 levels "chow","hf": 1 1 1 1 1 1 1 1 1 1 ...
 $ Bodyweight: num  21.5 28.1 24 23.4 23.7 ...

仅提取chow组的体重,如下所示:

chowVals <- select(chow, Bodyweight)
head(chowVals)
str(chowVals)

结果如下所示:

> head(chowVals)
  Bodyweight
1      21.51
2      28.14
3      24.04
4      23.45
5      23.68
6      19.79
> str(chowVals)
'data.frame':   12 obs. of  1 variable:
 $ Bodyweight: num  21.5 28.1 24 23.4 23.7 ...
> class(chowVals)
[1] "data.frame"
> # OR perform as following:
> # chowVals <- filter(dat, Diet=="chow") %>% select(Bodyweight)

从上面结果可以看出来,chowVals是一个数据框,现在我们将其转换为数字向量:

chowVals <- unlist(chowVals)
str(chowVals)
class(chowVals)

如下所示:

> str(chowVals)
 Named num [1:12] 21.5 28.1 24 23.4 23.7 ...
 - attr(*, "names")= chr [1:12] "Bodyweight1" "Bodyweight2" "Bodyweight3" "Bodyweight4" ...
> class(chowVals)
[1] "numeric"

数学术语与符号

作者在书中提到,他会尽量避免使用数学术语与数学符号,但是,有一些太常见的数据符号是大家常见的,需要知道。

希腊字母

\sum是希腊字母中的S的写法,表示相加,例如S=\sum_{i=1}^{n} x_{i}

\mu表示未知无数,相当于m,即mean;

\sigma表示标准差,相当于s,即standard difference;

\epsilon表示随机误差,相当于error;

\beta表示效应,即effect。

无穷(Infinity)

书中指出,我们经常使用的统计学结果是一种渐进结果(asymptotic results)。这个渐进结果指的是一种近似(approximation),也就是说随着数据点数目的增大,这个结果只能接近,无法完全相等,只有当数据点的数目是无穷(\infty)时,数字最接近,看下面的一个案例:

> onethird <- function(n) sum(3/10^c(1:n))
> 1/3 - onethird(4)
[1] 3.333333e-05
> 1/3 - onethird(10)
[1] 3.333334e-11
> 1/3 - onethird(16)
[1] 0

在这个案例中,我们就看到了,0.3的1到n次方的和是接近1/3的。

积分(Integrals)

积分在统计学也是比较常用的一个手段,有的时候要计算某个统计学分布的概率分布例如下面的这个曲线:

image

这个曲线是一个概率密度曲线,右下角的灰色面积占整个曲线下面积的比例,就是相应的概率(后面会讲),那么通过积分的手段来计算面积的分公式就是:
\int_{2}^{4} f(x) d x

相关文章

  • DALS001-数据准备(Getting Started)

    title: DALS001-数据准备(Getting Started)date: 2019-07-21 12:0...

  • LLVM入门参考资料

    Getting Started   - Getting Started with the LLVM System ...

  • Getting Started

    坑爹的我要开始系统学习web前端的所有知识了。两年前的实习算是基本入了个门,别的没学到,学了git这种版本控制工...

  • Getting Started

    Step-by-step guides for deploying your first app and mast...

  • Getting Started

    This project is for ideas sharing use. If you get any tho...

  • Getting Started

    webpack is a tool to build JavaScript modules in your app...

  • Getting Started

    好记性不如烂笔头,从今儿个开始,我所有的学习笔记或者工作中的“填坑”记录将记录在这里,顺便也就权当是分享了。如果对...

  • Getting Started

    Building Your First App Supporting Different Devices Buil...

  • Machine-Learning-Day-0

    Getting Started with Python in VS Code 学习之前需要准备啊, 这就是Day-...

  • Android Training(三):文件存储

    一. Getting Started 1.4 Saving Data 这里讲的是 Android 应用中主要的数据...

网友评论

    本文标题:DALS001-数据准备(Getting Started)

    本文链接:https://www.haomeiwen.com/subject/ybwurctx.html