R統計不球人,使用R函數
套路1: R統計不球人,使用R函數
1. 心法 I: R就像是多啦ㄟ夢,R程式套件及函數就像是多啦ㄟ夢口袋裡的法寶。R的使用不難,覺得難用是因為跟他不熟。要學會用R,你需要的不是很高大上的智慧,而是學習的耐性與花時間實作。
2. 心法 II: 長得像這樣f(x, y, z) = 2x + 3y - 4z的東西叫函數(function)。給它(代入)一組x、y、z值就會的到一個相對應的結果(output)。使用R程式套件及函數也是一樣。給R函數一組資料它就會幫你算(畫)出相對應的結果。函數所需要的xyz叫做參數(parameters)。怎麼知道那些函數需要那些參數?要會看說明書。用help(函數名)就可叫出該函數的說明書。學R的基本最重要的就是看懂說明書。
3. R基本資料型態快速入門 (一定要會):
a. 變數(variable): 用來存放資料,例如: v <- 3,就是把3放進v裡面(v裡面的資料 = 3)。
# 用箭頭 <- 別用等號 =。
b. 文字資料加單引號' '或雙引號" ",例如: v <- "abc",就是把abc放進v裡面(v裡面的資料 = "abc")。
# 數值資料不用加單引號' '或雙引號" "。
c. TRUE和FALSE (或大寫T和F)為邏輯資料,不可加單引號' '或雙引號" "。
d. factor: 是類別資料,例如:
Sex
|
M
|
M
|
M
|
F
|
F
|
F
|
Weight
|
3
|
3.5
|
3.2
|
2.8
|
2.6
|
2.2
|
Sex (M及F)是類別(分類、標籤)資料,Weight是數值資料。
e. vector: R最基本的資料型態(data type)。用小寫c建立一個vector。
v <- c(1, 2, 3, 4, 5)
# 將1-5組成一數值vector放進變數v裡面。
# v <- 3或v <- "abc"是建立僅含一個元素的vector,不用小c。
# 一個vector只能有單一種資料類型,全部是數值,全部是文字或全部是邏輯。
f. matrix: 排列成2維的資料。
m <-
matrix(c(3:14), nrow = 4, byrow = TRUE)
# 使用matrix函數將數字3-14建立一4橫列的matrix。
# byrow = TRUE,數字依橫向順序加入。
# 注意,這裡使用等號=而非箭頭<-。TRUE大寫不加單引號' '或雙引號" "。
# 一個matrix只能有單一種資料類型,全部是數值,全部是文字或全部是邏輯。
m # 顯示p內容,如下所示。
[,1]
[,2] [,3]
[1,] 3 4
5
[2,] 6 7
8
[3,] 9 10
11
[4,] 12 13
14
g. data frame: 多個vector組成,不同vector可以是不同資料型態。
Organism <- c("Human", "Mouse", "Fruit
Fly", "Roundworm", "Yeast")
GenomeSize <- c(3000000000, 3000000000, 135600000, 97000000,
12100000)
GeneCount <- c(30000, 30000, 13061, 19099, 6034)
# 建立三組vector: Organism、GenomeSize及GeneCount。
ComparativeGenomeSize <-
data.frame(organism = Organism, genomesize = GenomeSize, genegount =
GeneCount)
# 使用data.frame函數將三組vector合併成一組data frame。
ComparativeGenomeSize # 顯示ComparativeGenomeSize內容,如下所示。
organism genomesize genegount
1 Human 3.000e+09
30000
2 Mouse 3.000e+09
30000
3 Fruit Fly 1.356e+08 13061
4 Roundworm 9.700e+07
19099
5 Yeast 1.210e+07
6034
4. 使用R函數繪圖、算統計只要掌握三要點:
a. input資料格式。
b. 程式套件(package)及函數(function),非基本模組需安裝程式套件。
c. 依需求條件設定參數(parameter),詳見程式套件及函數的使用說明,現學現用即可。
5. 範例一: 使用基本模組函數,以t test為例。
one sample (單獨一組資料) t-test,H0: m = 0,HA: m ≠ 0。
第一步: 用google或其他搜尋引擎以one sample t-test R尋找方法。
結果: R基本模組的t.test函數可用。
第二步: 打開R視窗,使用help函數看t.test說明書。
help(t.test)
# t.test說明: t.test(x, y = NULL,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, ...)
第三步: 由說明書知道input (說明中的x)資料以vector型態輸入。
x <- c(1.7,0.7,-0.4,-1.8,0.2,0.9,-1.2,-0.9,-1.8,-1.4,-1.8,-2.0)
第四步: 執行one sample t-test
t.test(x, mu = 0, alternative = "two.sided")
# mu = 0, alternative = "two.sided" 因為 H0: m = 0。
# y = NULL只有一組資料。
第五步: 判讀結果:
data: x
t = -1.7981, df = 11, p-value = 0.09964
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
-1.4456548 0.1456548
sample estimates: mean of x
-0.65
# p > 0.05,H0: m = 0假設成立。
6. 範例二: 使用基本模組函數,以常用的t test為例。
由t.test使用說明可知,t.test函數也可以算two-sample (兩組資料) t
test。
H0:
m 1 = m2,HA: m1 ≠m2。
第一步: 由說明書知道input (說明中的x, y)資料以vector型態輸入。
x<-c(8.8,8.4,7.9,8.7,9.1,9.6)
y<-c(9.9,9.0,11.1,9.6,8.7,10.4,9.5)
第二步: 執行two sample t-test
t.test(x, y, alternative = "two.sided", mu = 0, paired =
F, var.equal = T, conf.level = 0.95)
# mu = 0, alternative = "two.sided" 因為H0: m 1 = m2。
# paired = FALSE兩組資料是獨立樣本,執行two-sample t-test而非paired t。
# var.equal = TRUE兩組資料有相同變異數,取樣來自同一母體(population)。
第三步: 判讀結果:
Two Sample t-test
data: x and y
t = -2.4765, df = 11, p-value = 0.03076
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.8752609 -0.1104534
sample estimates:
mean of x mean of y
8.750000 9.742857
# p < 0.05,H0: m 1 = m2假設不成立,兩組資料平均不同。
7. 範例三: 基本模組沒有,安裝加程式套件,以Z test為例。
one sample (單獨一組資料) Z test,H0: m = 0,HA: m ≠ 0。
第一步: 用google或其他搜尋引擎以one sample Z test R尋找方法。
結果: R基本模組以外的,BSDA 套件(package)的z.test函數可用。
第二步: 打開R視窗,利用R視窗的安裝程式套件功能安裝BSDA程式套件。
第三步: 安裝成功後,用library函數叫出BSDA程式套件備用。
library(BSDA)
第四步: 使用help函數看z.test使用說明。
help(z.test)
# z.test 使用說明: z.test(x, y = NULL, alternative = "two.sided", mu = 0,
sigma.x = NULL,
sigma.y = NULL, conf.level =
0.95)
第五步: 由說明書知道input (說明中的x)資料以vector型態輸入。
x <- c(2.0,1.1,4.4,-3.1,-1.3,3.9,3.2,-1.6,3.5,1.2,2.5,2.3,1.9,1.8,2.9,-0.3,-2.4)
第六步: 執行one sample Z test。
z.test(x, y = NULL, alternative = "two.sided", mu = 0,
sigma.x = 3.6691, sigma.y = NULL,
conf.level = 0.95)
# mu = 0, alternative = "two.sided" 因為 H0: m = 0。
# y = NULL只有一組資料。
第七步: 判讀結果:
data: x
z = 1.4542, p-value = 0.1459
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval: -0.4500297 3.0382650
sample estimates: mean of x
1.294118
# p > 0.05,H0: m = 0假設成立。
8. 範例四: 安裝使用bioconductor程式套件。
有些基本模組沒有的程式套件(屬於的bioconductor程式套件) ,無法利用R視窗的安裝程式套件功能安裝。可直接在R視窗下指令安裝。以計算Phi係數(Phi coefficient)的函數phicoef為例。
第一步: 打開R視窗,在R視窗輸入下列指令安裝bioconductor中的GenomicRanges套件。
source("https://bioconductor.org/biocLite.R")
biocLite("GenomicRanges")
第二步: 安裝成功後,呼叫GenomicRanges模組。
library(GenomicRanges)
第三步: 輸入建立資料(邏輯: T為TRUE,F為FALSE)。
cnt <- read.table(header = T, text = "
Dis Ins
T F
T F
F F
F T
T T
T T
T T
F T
T T
F T
F T
F F
T F
T F")
# 資料空白分隔
attach(cnt)
# 告知R要使用cnt資料
names(cnt)
# 指定資料標題名稱
第四步: 使用GenomicRanges模組的phicoef函數代入Dis及Ins計算Phi係數。
phicoef(Dis, Ins)
[1] -0.1666667 # 計算結果。
來勁了嗎? 想知道更多?? 補充資料(連結):
1. R 資料型態(data types)
R dataframe: https://www.tutorialspoint.com/r/r_data_frames.htm
2. Cookbook for R: http://www.cookbook-r.com/
3. Quick-R: https://www.statmethods.net/
4. Statistical tools for high-throughput data analysis (STHDA):
http://www.sthda.com/english/
留言
張貼留言