R統計不球人,使用R函數

套路1: R統計不球人使用R函數

1. 心法 I: R就像是多啦ㄟ夢R程式套件及函數就像是多啦ㄟ夢口袋裡的法寶。R的使用不難,覺得難用是因為跟他不熟。要學會用R你需要的不是很高大上的智慧而是學習的耐性與花時間實作。

2. 心法 II: 長得像這樣f(x, y, z) = 2x + 3y - 4z的東西叫函數(function)。給它(代入)一組xyz值就會的到一個相對應的結果(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. TRUEFALSE (或大寫TF)為邏輯資料,不可加單引號' '或雙引號" "
  d. factor: 是類別資料,例如:
Sex
M
M
M
F
F
F
Weight
3
3.5
3.2
2.8
2.6
2.2
    Sex (MF)是類別(分類標籤)資料,Weight是數值資料。
  e. vector: R最基本的資料型態(data type)。用小寫c建立一個vector
    v <- c(1, 2, 3, 4, 5)  # 1-5組成一數值vector放進變數v裡面。
    # v <- 3v <- "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: OrganismGenomeSizeGeneCount
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-testH0: m = 0HA: 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.05H0: m = 0假設成立。

6. 範例二: 使用基本模組函數,以常用的t test為例。
   t.test使用說明可知,t.test函數也可以算two-sample (兩組資料) t test
    H0: m 1 = m2HA: m1m2
第一步: 由說明書知道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.05H0: m 1 = m2假設不成立,兩組資料平均不同。

7. 範例三: 基本模組沒有,安裝加程式套件,以Z test為例。
one sample (單獨一組資料) Z testH0: m = 0HA: 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.05H0: 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)
第三步: 輸入建立資料(邏輯: TTRUEFFALSE)
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函數代入DisIns計算Phi係數
phicoef(Dis, Ins)
[1] -0.1666667  # 計算結果。

來勁了嗎? 想知道更多?? 補充資料(連結):
1. R 資料型態(data types)
2. Cookbook for R: http://www.cookbook-r.com/
4. Statistical tools for high-throughput data analysis (STHDA): http://www.sthda.com/english/
5. 關於Bioconductor: https://www.bioconductor.org/

留言

這個網誌中的熱門文章

統計不球人 目錄 (Table of Contents)

如何選擇統計方法 1

單因子多樣本中位數差異檢定 (Kruskal-Wallis test)