title: DALS001-數(shù)據(jù)準(zhǔn)備(Getting Started)
date: 2019-07-21 12:0:00
type: "tags"
tags:
- R包
categories: - 生物統(tǒng)計(jì)
前言
本書是《Data Analysis for the Life Sciences》這本書的讀書筆記。
此書一共分了10部分客扎,分別為:
- 數(shù)據(jù)準(zhǔn)備(Getting Started)
- 統(tǒng)計(jì)推斷(Inference)
- 數(shù)據(jù)挖掘(Exploratory Data Analysis)
- 矩陣代數(shù)(Matrix Algebra)
- 線性模型(Linear Models)
- 高維數(shù)據(jù)推斷(Inference For high Dimensional Data)
- 統(tǒng)計(jì)模型(Statistical Models)
- 距離與降低(Distance and Dimension Reduction)
- 基礎(chǔ)機(jī)器學(xué)習(xí)(Basic Machine Learning)
- 批次效應(yīng)(Batch Effects)
由于這本書是為生命科學(xué)相關(guān)專業(yè)而寫的锋华,考慮到相關(guān)專業(yè)學(xué)生數(shù)理功底太弱柜与,書中并沒涉及很復(fù)雜的數(shù)學(xué)與統(tǒng)計(jì)學(xué)知識(shí),還是很好理解的凯亮。
R語言包與原始數(shù)據(jù)準(zhǔn)備
這本書中涉及到的統(tǒng)計(jì)學(xué)原理與案例分析都是通過R語言實(shí)現(xiàn)的朱嘴,作者也把相應(yīng)的腳本與數(shù)據(jù)放到了Github上。
這里先安裝幾個(gè)R包贝搁,如下所示:
library(devtools)
install_github("genomicsclass/dagdata")
dir <- system.file(package = "dagdata")
list.files(dir)
加載原始數(shù)據(jù) ,如下所示:
> dir <- system.file(package = "dagdata")
> list.files(dir)
[1] "data" "DESCRIPTION" "extdata" "help" "html" "Meta"
[7] "NAMESPACE" "script"
上面的代碼使用了到幾個(gè)包與命令衡瓶,其中devtool
包中的install_github()
函數(shù)用于直接從Github下載相應(yīng)包徘公,以前的筆記中已經(jīng)說明了這個(gè)包的用法《R語言筆記之包的操作與內(nèi)置數(shù)據(jù)集》。
另外還有兩個(gè)函數(shù)哮针,其中system.file()
函數(shù)的功能是:發(fā)現(xiàn)包的完整路徑名,例如上面的變量dir
的輸出就是如下所示:
> dir
[1] "C:/Users/20161111/Documents/R/win-library/3.5/dagdata"
list.files()
函數(shù)的功能是列出相應(yīng)路徑下的文件坦袍,如下所示:
> list.files(dir)
[1] "data" "DESCRIPTION" "extdata" "help" "html" "Meta"
[7] "NAMESPACE" "script"
使用list.files()
函數(shù)還能繼續(xù)列舉出目錄下一層目錄中的內(nèi)容十厢,例如現(xiàn)在我們列出extdata
這個(gè)目錄中的內(nèi)容,如下所示:
> 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()
函數(shù)捂齐,它的功能是將字符串連接起來蛮放,形成路徑,如下所示:
> file.path(dir,"extdata")
[1] "C:/Users/20161111/Documents/R/win-library/3.5/dagdata/extdata"
現(xiàn)在加載原始數(shù)據(jù)奠宜,如下所示:
filename <- file.path(dir,"extdata/femaleMiceWeights.csv")
dat <- read.csv(filename)
# input raw data
head(dat)
str(dat)
數(shù)據(jù)如下所示:
> 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 ...
從數(shù)據(jù)我們可以知道包颁,這是一個(gè)數(shù)據(jù)框瞻想,有2列,第1列是小鼠的包含情況娩嚼,分別是chow(正常組),hf(高脂組蘑险,就是high fat的縮寫),第2列的體重岳悟,從常識(shí)可以知道佃迄,單位是g(一只標(biāo)準(zhǔn)的小鼠體重是18-22g)。
以上是原始數(shù)據(jù)的下載過程贵少,涉及到的知識(shí)點(diǎn)為:R包的下載與加載呵俏,另外,也可以通過downloader
包來下載原始數(shù)據(jù)滔灶,整個(gè)操作如下所示:
install.packages("downloader")
url <- "https://raw.githubusercontent.com/genomicsclass/dagdata/master/inst/extd\
ata/femaleMiceWeights.csv"
filename <- "femaleMiceWeights.csv"
download(url, destfile=filename)
這一過程不再演示普碎,跟前面的目的是一樣,都是下載原始數(shù)據(jù)录平。
有了原始數(shù)據(jù)后麻车,現(xiàn)在過程一下數(shù)據(jù),我們捏造chow組的小鼠數(shù)據(jù)萄涯,如下所示:
library(dplyr)
chow <- filter(dat, Diet =="chow")
# Extract chow gropu from raw data of dat
head(chow)
str(chow)
結(jié)果如下所示:
> 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)
結(jié)果如下所示:
> 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)
從上面結(jié)果可以看出來,chowVals
是一個(gè)數(shù)據(jù)框涝影,現(xiàn)在我們將其轉(zhuǎn)換為數(shù)字向量:
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"
數(shù)學(xué)術(shù)語與符號(hào)
作者在書中提到枣察,他會(huì)盡量避免使用數(shù)學(xué)術(shù)語與數(shù)學(xué)符號(hào),但是燃逻,有一些太常見的數(shù)據(jù)符號(hào)是大家常見的序目,需要知道。
希臘字母
是希臘字母中的S的寫法伯襟,表示相加猿涨,例如
表示未知無數(shù),相當(dāng)于m姆怪,即mean叛赚;
表示標(biāo)準(zhǔn)差,相當(dāng)于s稽揭,即standard difference俺附;
表示隨機(jī)誤差,相當(dāng)于error溪掀;
表示效應(yīng)事镣,即effect。
無窮(Infinity)
書中指出揪胃,我們經(jīng)常使用的統(tǒng)計(jì)學(xué)結(jié)果是一種漸進(jìn)結(jié)果(asymptotic results)璃哟。這個(gè)漸進(jìn)結(jié)果指的是一種近似(approximation)氛琢,也就是說隨著數(shù)據(jù)點(diǎn)數(shù)目的增大,這個(gè)結(jié)果只能接近随闪,無法完全相等阳似,只有當(dāng)數(shù)據(jù)點(diǎn)的數(shù)目是無窮()時(shí),數(shù)字最接近蕴掏,看下面的一個(gè)案例:
> 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
在這個(gè)案例中障般,我們就看到了,0.3的1到n次方的和是接近1/3的盛杰。
積分(Integrals)
積分在統(tǒng)計(jì)學(xué)也是比較常用的一個(gè)手段挽荡,有的時(shí)候要計(jì)算某個(gè)統(tǒng)計(jì)學(xué)分布的概率分布例如下面的這個(gè)曲線:
這個(gè)曲線是一個(gè)概率密度曲線,右下角的灰色面積占整個(gè)曲線下面積的比例即供,就是相應(yīng)的概率(后面會(huì)講)定拟,那么通過積分的手段來計(jì)算面積的分公式就是: