講義範例來自R基本實作秘訣速查表,搭配參考Rstudio視覺介面以及Rmarkdown秘訣速查表。
一份Rmarkdown文件經常使用非內建套件(package)的函式(function)與資料,為了能在文件內正常使用這些套件的函式,建議方式是在R markdown的第一個chunk載入。這段文字之後的setup
chunk,渲染後(Knit)不會在輸出文件顯示chunk內的程式碼,你可以從源始Rmarkdown檔檢視安裝及載入套件的程式碼。
載入內建資料:“iris”是經典生物統計資料集,常用於各式統計方法及程式測試。資料集介紹請見維基百科條目:安德森鳶尾花卉數據集。
data(iris)
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
iris 資料有五個變項。
在console視窗輸入以下任何查詢指令,可開啟函式或套件的說明文件。
?mean ## 取得函式的說明文件
help.search('weightedmean') ## 以關鍵詞查詢有weightedmean函式的套件說明文件
help(package ='dplyr') ## 關鍵詞查詢說明文件
資料與函式在R環境通稱“物件”(Objects),物件有兩種性質:形態(class)與資料結構(structure)。R環境設資料物件形態有數值(value)、向量(vector)、矩陣(matrix)、資料框架(data frame)、以及列表(List)。每種型態都有指定的資料結構,依照資料結構建立的資料物件,才能輸入函式,執行計算、資料整頓等工作。
class(iris) ## 顯示物件型態
## [1] "data.frame"
str(iris) ## 顯示物作型態與資料結果
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
getwd()
。setwd()
設定其他資料夾路徑。資料檔可存放於工作目錄之外的資料夾路徑,未處理的資料建議以csv格式存檔。
如果要使用之前儲存的映像檔(RData),建議在文件第一個chunk setup
執行匯入load()
。
讀取前確認資料檔第一列(row)為欄位標題,才能獲得如範例的執行效果。 以五大人格測驗資料為例:
# 讀取格式化分欄的純文字檔
big5_01 <- read.table(file = "../data/5factor.txt", header = TRUE)
head(big5_01)
## subj_id O C E A N
## 1 S01 4.428571 4.5 3.333333 5.142857 1.625
## 2 S02 5.714286 2.9 3.222222 3.000000 2.625
## 3 S03 5.142857 2.8 6.000000 3.571429 2.500
## 4 S04 3.142857 5.2 1.333333 1.571429 3.125
## 5 S05 5.428571 4.4 2.444444 4.714286 1.625
## 6 S06 4.428571 2.2 3.111111 4.571429 4.000
# 讀取逗號分欄的純文字檔
big5_02 <- read.csv(file = "../data/5factor.csv")
head(big5_02)
## subj_id O C E A N
## 1 S01 4.428571 4.5 3.333333 5.142857 1.625
## 2 S02 5.714286 2.9 3.222222 3.000000 2.625
## 3 S03 5.142857 2.8 6.000000 3.571429 2.500
## 4 S04 3.142857 5.2 1.333333 1.571429 3.125
## 5 S05 5.428571 4.4 2.444444 4.714286 1.625
## 6 S06 4.428571 2.2 3.111111 4.571429 4.000
存放資料檔格式以有分欄的純文字檔優先考慮,有其他格式或需儲存檔案太多,再考慮以映像檔(RData)儲存。
## 建議增加參數row.names = FALSE
## 寫入格式化分欄的純文字檔
write.table(head(big5_01), file = "big5_head.txt",row.names = FALSE)
## 寫入逗號分欄的純文字檔
write.csv(head(big5_02), file = "big5_head.csv",row.names = FALSE)
ls()
,列印已存物件名稱。rm(x)
(x代表任何已存物件)。rm(list = ls())
。<-
指派物件內容。R自動判斷運算子右方的資料結構,賦予物件型態。## 指派數值
a <- "apple"
## 建立函式
square <- function(x){
squared = x*x
return(squared)
}
## 檢視函式執行效果
square(7)
## [1] 49
定義:一維資料結構~只用一套數值/向量索引資料內數值的結構。
建立向量的各種方法:
x1 <- c(2,4,6) #直接列出數值
x2 <- 2:6 #製造連續數值
x3 <- seq(2, 3, by = 0.5) #製造連續數值
x4 <- rep(1:2, times=3) #製造重覆數值
names(x2) <- c("apple","banana","orange","lemon","papaja") #為數值命名
資料表內一個欄位就是一個向量,內建運算函式能檢視向量內數值狀態:
sort(x4) # 回傳排序的數值
## [1] 1 1 1 2 2 2
rev(x4) # 顛倒數值順序
## [1] 2 1 2 1 2 1
table(x4) # 表列數值次數
## x4
## 1 2
## 3 3
unique(x4) # 查看數值種類
## [1] 1 2
資料處理與運算經常要由向量內取出部分數值,善用索引技巧能事半功倍。
x2[4] # 第四位數值
## lemon
## 5
x2[-4] # 第四位之外的數值
## apple banana orange papaja
## 2 3 4 6
x2[2:4] # 第二到第四位數值
## banana orange lemon
## 3 4 5
x2[-(2:4)] # 第二到第四位之外的數值
## apple papaja
## 2 6
x2[c(1,5)] # 第一位和第五位數值
## apple papaja
## 2 6
x3[x3==3] # 等於3的數值
## [1] 3
x3[which(x3==3)] # 等於3的數值
## [1] 3
x3[x3<3] # 小於3的數值
## [1] 2.0 2.5
x3[x3 %in% c(1,2,5)] # 符合集合{1, 2, 5}的數值
## [1] 2
x2['apple'] # 命名是'apple'的數值
## apple
## 2
向量的型態可以是邏輯值(logical), 整數或浮點數(numeric), 字符或字串(character), 以及因子(factor)。型態之間能用as.
函式系列互相轉換,初次建立物件的R判斷順序是“logical -> numeric -> character -> factor”。
as.logical() |
TRUE, FALSE, TRUE | |
as.numeric() |
1, 0, 1 | |
as.character() |
1, 0, 1 | 測試console內執行 |
as.factor() |
1, 0, 1 | 測試console內執行 |
廻圈與函式需要透過“比對”,設定執行程式碼的條件:
功能 | 程式碼範例 |
---|---|
等於 | a==b |
不等於 | a!=b |
大於 | a>b |
小於 | a<b |
大於或等於 | a>=b |
小於或等於 | a<=b |
等於 NA | is.na(a) |
等於 null | is.null(a) |
只要兩項物件資料結構相同,都能比對!
x <- 1:4
for (i in x) {
j <- i + 10
print(j)
}
## [1] 11
## [1] 12
## [1] 13
## [1] 14
i <- 2
while (i < 5) {
print(i)
i <- i + 1
}
## [1] 2
## [1] 3
## [1] 4
i <- 2
if (i > 3) {
print('Yes')
} else {
print('No')
}
## [1] "No"
square <- function(x){
squared = x*x
return(squared)
}
square(7)
## [1] 49
square(13)
## [1] 169
定義:需要使用兩套數值/向量索引資料內數值的結構。
以對角矩陣做範例:
m <- matrix(c(1:3,c(2,1,6),c(3,6,1)),nc=3)
m
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 2 1 6
## [3,] 3 6 1
n <- 0:2
n
## [1] 0 1 2
索引矩陣內數值
m[2,] ## 取得第2列數值
## [1] 2 1 6
m[,1] ## 取得第1欄數值
## [1] 1 2 3
m[2,3] ## 取得第 2 列第 3 欄數值
## [1] 6
矩陣運算
t(m) ## 轉置矩陣
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 2 1 6
## [3,] 3 6 1
m %*% n ## 矩陣內積
## [,1]
## [1,] 8
## [2,] 13
## [3,] 8
solve(m,n) ## 解聯立方程式, m必須是對角矩陣
## [1] 1.4166667 -0.3333333 -0.2500000
定義:由兩個以上字符組合的資料。例如姓名~ John, Rebeca
字串可以是向量數值,例如問卷選項。依處理需要,經常會合併、分割或取代字串內容。
x <- c("Donald", "Trump")
y <- c("Joe","Biden")
paste(x,y,sep = "")
## [1] "DonaldJoe" "TrumpBiden"
paste(x, collapse ='')
## [1] "DonaldTrump"
grep(pattern="D", x)
## [1] 1
toupper(x)
## [1] "DONALD" "TRUMP"
tolower(x)
## [1] "donald" "trump"
nchar(x)
## [1] 6 5
定義: 包含至少一筆數值數量相同的向量
df <- data.frame(x = 1:10, y = letters[1:10])
df$x ## 索引x欄位數值
## [1] 1 2 3 4 5 6 7 8 9 10
df[[2]] ## 索引第2欄數值
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
df[,2] ## 索引第2欄數值
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
df[2,] ## 索引第2列數值
## x y
## 2 2 b
df[2,2] ## 索引第2欄,第2列數值
## [1] "b"
head(df) ## 列印首6列數值
## x y
## 1 1 a
## 2 2 b
## 3 3 c
## 4 4 d
## 5 5 e
## 6 6 f
tail(df)
## x y
## 5 5 e
## 6 6 f
## 7 7 g
## 8 8 h
## 9 9 i
## 10 10 j
有需要時,資料框架能依欄或依列合併其他物件。
z <- runif(10) ## 製造新欄位資料
d <- c(11,letters[11],runif(1)) ## 製造新列資料
df = cbind(df,z)
df
## x y z
## 1 1 a 0.263787938
## 2 2 b 0.890226405
## 3 3 c 0.726580267
## 4 4 d 0.641465773
## 5 5 e 0.009535941
## 6 6 f 0.252358800
## 7 7 g 0.151483895
## 8 8 h 0.340676893
## 9 9 i 0.550592119
## 10 10 j 0.925533424
df = rbind(df,d)
df
## x y z
## 1 1 a 0.263787937816232
## 2 2 b 0.890226404881105
## 3 3 c 0.726580267073587
## 4 4 d 0.641465773107484
## 5 5 e 0.00953594082966447
## 6 6 f 0.252358800265938
## 7 7 g 0.151483895257115
## 8 8 h 0.34067689278163
## 9 9 i 0.550592118874192
## 10 10 j 0.925533423898742
## 11 11 k 0.769426781916991
定義: 索引資料框架的欄位,統計函式必須使用因子分組資料。
x<-rep(1:4,each=25)
factor(x) ## 將向量轉換成因子,設定層次(levels)及層次順序
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2
## [38] 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [75] 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## Levels: 1 2 3 4
x<-1:100
cut(x,4) ## 指定切割區間數,將向量轉換成因子
## [1] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8]
## [6] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8]
## [11] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8]
## [16] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8]
## [21] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8] (0.901,25.8]
## [26] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5]
## [31] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5]
## [36] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5]
## [41] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5]
## [46] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5] (25.8,50.5]
## [51] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2]
## [56] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2]
## [61] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2]
## [66] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2]
## [71] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2] (50.5,75.2]
## [76] (75.2,100] (75.2,100] (75.2,100] (75.2,100] (75.2,100]
## [81] (75.2,100] (75.2,100] (75.2,100] (75.2,100] (75.2,100]
## [86] (75.2,100] (75.2,100] (75.2,100] (75.2,100] (75.2,100]
## [91] (75.2,100] (75.2,100] (75.2,100] (75.2,100] (75.2,100]
## [96] (75.2,100] (75.2,100] (75.2,100] (75.2,100] (75.2,100]
## Levels: (0.901,25.8] (25.8,50.5] (50.5,75.2] (75.2,100]
df <- data.frame(y = sample(1:16,size = 100,replace = TRUE), x = as.factor(rep(1:4,each=25)) )
plot(y ~ x,data=df)
定義: 集合型態及數量不一致的資料
l<-list(x= 1:5,
y= c('a','b'),
z= df)
l[[2]] ## 取得第二個物件數值
## [1] "a" "b"
l[3] ## 取得列表第三個物件名稱與數值
## $z
## y x
## 1 7 1
## 2 9 1
## 3 9 1
## 4 3 1
## 5 3 1
## 6 6 1
## 7 4 1
## 8 13 1
## 9 14 1
## 10 4 1
## 11 9 1
## 12 9 1
## 13 12 1
## 14 5 1
## 15 11 1
## 16 15 1
## 17 2 1
## 18 10 1
## 19 11 1
## 20 1 1
## 21 11 1
## 22 15 1
## 23 9 1
## 24 3 1
## 25 10 1
## 26 9 2
## 27 11 2
## 28 14 2
## 29 10 2
## 30 9 2
## 31 7 2
## 32 9 2
## 33 7 2
## 34 11 2
## 35 7 2
## 36 9 2
## 37 8 2
## 38 16 2
## 39 10 2
## 40 4 2
## 41 4 2
## 42 14 2
## 43 13 2
## 44 6 2
## 45 16 2
## 46 16 2
## 47 10 2
## 48 15 2
## 49 16 2
## 50 1 2
## 51 5 3
## 52 11 3
## 53 15 3
## 54 3 3
## 55 4 3
## 56 8 3
## 57 5 3
## 58 10 3
## 59 8 3
## 60 9 3
## 61 4 3
## 62 1 3
## 63 13 3
## 64 1 3
## 65 7 3
## 66 14 3
## 67 11 3
## 68 5 3
## 69 16 3
## 70 2 3
## 71 13 3
## 72 9 3
## 73 8 3
## 74 10 3
## 75 1 3
## 76 11 4
## 77 3 4
## 78 15 4
## 79 12 4
## 80 3 4
## 81 7 4
## 82 15 4
## 83 16 4
## 84 9 4
## 85 11 4
## 86 10 4
## 87 10 4
## 88 11 4
## 89 15 4
## 90 7 4
## 91 7 4
## 92 14 4
## 93 5 4
## 94 10 4
## 95 5 4
## 96 16 4
## 97 8 4
## 98 14 4
## 99 14 4
## 100 6 4
l$x ## 取得列表x物件數值
## [1] 1 2 3 4 5
l['z'] ## 取得列表z物件名稱與數值
## $z
## y x
## 1 7 1
## 2 9 1
## 3 9 1
## 4 3 1
## 5 3 1
## 6 6 1
## 7 4 1
## 8 13 1
## 9 14 1
## 10 4 1
## 11 9 1
## 12 9 1
## 13 12 1
## 14 5 1
## 15 11 1
## 16 15 1
## 17 2 1
## 18 10 1
## 19 11 1
## 20 1 1
## 21 11 1
## 22 15 1
## 23 9 1
## 24 3 1
## 25 10 1
## 26 9 2
## 27 11 2
## 28 14 2
## 29 10 2
## 30 9 2
## 31 7 2
## 32 9 2
## 33 7 2
## 34 11 2
## 35 7 2
## 36 9 2
## 37 8 2
## 38 16 2
## 39 10 2
## 40 4 2
## 41 4 2
## 42 14 2
## 43 13 2
## 44 6 2
## 45 16 2
## 46 16 2
## 47 10 2
## 48 15 2
## 49 16 2
## 50 1 2
## 51 5 3
## 52 11 3
## 53 15 3
## 54 3 3
## 55 4 3
## 56 8 3
## 57 5 3
## 58 10 3
## 59 8 3
## 60 9 3
## 61 4 3
## 62 1 3
## 63 13 3
## 64 1 3
## 65 7 3
## 66 14 3
## 67 11 3
## 68 5 3
## 69 16 3
## 70 2 3
## 71 13 3
## 72 9 3
## 73 8 3
## 74 10 3
## 75 1 3
## 76 11 4
## 77 3 4
## 78 15 4
## 79 12 4
## 80 3 4
## 81 7 4
## 82 15 4
## 83 16 4
## 84 9 4
## 85 11 4
## 86 10 4
## 87 10 4
## 88 11 4
## 89 15 4
## 90 7 4
## 91 7 4
## 92 14 4
## 93 5 4
## 94 10 4
## 95 5 4
## 96 16 4
## 97 8 4
## 98 14 4
## 99 14 4
## 100 6 4
有至少一個欄位的資料,使用數學運算函式能做簡單統計。
x <- runif(10)
y <- rnorm(10)
log(x) ##自然對數
## [1] -2.2098940 -1.4485347 -1.2754271 -0.3863455 -0.9332931 -0.3900075
## [7] -0.9000852 -0.8343352 -0.2740980 -0.1494294
exp(x) ##自然指數
## [1] 1.115957 1.264800 1.322219 1.972961 1.481798 1.968067 1.501606 1.543670
## [9] 2.138827 2.365996
max(x) ##最大值
## [1] 0.8611993
min(x) ##最小值
## [1] 0.1097123
round(exp(x), 2) ##顯示數值到小數點第2位
## [1] 1.12 1.26 1.32 1.97 1.48 1.97 1.50 1.54 2.14 2.37
signif(log(x), 3) ##小數點第3位起簡寫數值
## [1] -2.210 -1.450 -1.280 -0.386 -0.933 -0.390 -0.900 -0.834 -0.274 -0.149
quantile(x) ##百分位數
## 0% 25% 50% 75% 100%
## 0.1097123 0.3077979 0.4203490 0.6789147 0.8611993
rank(x) ##次序位數
## [1] 1 2 3 8 4 7 5 6 9 10
sum(x) ##總和
## [1] 4.835937
mean(x) ##平均
## [1] 0.4835937
median(x) ##中位數
## [1] 0.420349
var(x) ##樣本變異數
## [1] 0.06165004
sd(x) ##樣本標準差
## [1] 0.2482943
cor(x,y) ##相關
## [1] 0.01682948
預設內建統計函式已經涵蓋基礎統計方法
prop.test(x,seq(10,100,by=10)) ## 分組平均比例顯著性考驗
## Warning in prop.test(x, seq(10, 100, by = 10)): Chi-squared approximation may be
## incorrect
##
## 10-sample test for equality of proportions without continuity
## correction
##
## data: x out of seq(10, 100, by = 10)
## X-squared = 0.55949, df = 9, p-value = 1
## alternative hypothesis: two.sided
## sample estimates:
## prop 1 prop 2 prop 3 prop 4 prop 5 prop 6
## 0.010971227 0.011745712 0.009310388 0.016988392 0.007865131 0.011284197
## prop 7 prop 8 prop 9 prop 10
## 0.005807643 0.005427038 0.008447306 0.008611993
t.test(x,y) ## 獨立分組平均數 t檢定
##
## Welch Two Sample t-test
##
## data: x and y
## t = 1.5587, df = 9.9596, p-value = 0.1503
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.2337581 1.3202625
## sample estimates:
## mean of x mean of y
## 0.4835937 -0.0596585
group <- factor(rep(c("a","b","c"),c(3,3,4) ))
pairwise.t.test(x,group) ## 計算t檢定的相依樣本變數相關性
##
## Pairwise comparisons using t tests with pooled SD
##
## data: x and group
##
## a b
## b 0.076 -
## c 0.063 0.821
##
## P value adjustment method: holm
aov.1 <- aov(x~group) ## 變異數分析
lm.1 <- lm(x~group) ## 線性模型
glm.1 <- glm(x~group) ## 通用線性模型
summary(glm.1) ## 簡報變異數分析, 線性模型, 通用線性模型
##
## Call:
## glm(formula = x ~ group)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.20900 -0.16060 0.04913 0.09563 0.24566
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.2080 0.1041 1.998 0.0859 .
## groupb 0.3753 0.1472 2.550 0.0381 *
## groupc 0.4076 0.1377 2.960 0.0211 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.03250139)
##
## Null deviance: 0.55485 on 9 degrees of freedom
## Residual deviance: 0.22751 on 7 degrees of freedom
## AIC: -1.4527
##
## Number of Fisher Scoring iterations: 2
使用機率分佈函式製造符合假設的模擬資料,預覽研究設計的合理性與可執行程度。
##常態分佈
norm_data <- rnorm(100) ## 製造隨機變數
pnorm(norm_data) ## 累積機率函數
## [1] 0.511818722 0.528197230 0.806257959 0.663110218 0.577459701 0.163710770
## [7] 0.243985175 0.983917183 0.058142202 0.004315057 0.385448269 0.228004765
## [13] 0.804911385 0.302604457 0.151559213 0.544692017 0.542362573 0.007197635
## [19] 0.037259712 0.724940836 0.488882865 0.531323755 0.992170175 0.069239582
## [25] 0.978199043 0.073253398 0.001973101 0.553173747 0.210628005 0.188412162
## [31] 0.761909583 0.131724295 0.589672377 0.454968829 0.094633519 0.468221689
## [37] 0.970285643 0.327576360 0.888312975 0.798949402 0.218118679 0.558900375
## [43] 0.380713982 0.779811579 0.141196367 0.858054495 0.920942277 0.781069739
## [49] 0.213405383 0.905578633 0.260644816 0.875675009 0.450664927 0.483139225
## [55] 0.382430326 0.770389849 0.695413620 0.352796222 0.945055188 0.526267843
## [61] 0.699129007 0.555892288 0.688561775 0.777178405 0.750814844 0.119140784
## [67] 0.395385369 0.826755357 0.491371131 0.084368741 0.955318635 0.107745785
## [73] 0.396795975 0.898234457 0.413503511 0.443954135 0.054459252 0.855430105
## [79] 0.467491176 0.976216715 0.245624424 0.720841465 0.962893935 0.940897389
## [85] 0.452361287 0.322529190 0.893556401 0.659931221 0.355857729 0.686593700
## [91] 0.432687381 0.647718070 0.150522968 0.160366066 0.600580484 0.400344119
## [97] 0.497175911 0.644863691 0.397514132 0.861568013
dnorm(norm_data) ## 機率密度函數
## [1] 0.398767202 0.397945375 0.274624702 0.365114265 0.391398554 0.246973790
## [7] 0.313662466 0.040205072 0.116219905 0.012678518 0.382380938 0.302167345
## [13] 0.275785100 0.349048651 0.234769594 0.396436315 0.396690979 0.019971598
## [19] 0.081331984 0.333707256 0.398787372 0.397711924 0.021508965 0.133143537
## [25] 0.052084173 0.139030294 0.006262715 0.395393332 0.288707035 0.269966665
## [31] 0.309518577 0.213480334 0.388821271 0.396398095 0.168537761 0.397675937
## [37] 0.067504114 0.361074408 0.190097210 0.280844157 0.294634854 0.394586276
## [43] 0.380972959 0.296239021 0.223865960 0.224670000 0.147339264 0.295265605
## [49] 0.290927399 0.168259124 0.324779415 0.205075926 0.395887876 0.398585928
## [55] 0.381490187 0.303359795 0.350067534 0.371465901 0.111153572 0.398077181
## [61] 0.348148273 0.395020559 0.353503737 0.298258989 0.317225924 0.199029068
## [67] 0.385145842 0.256128747 0.398848958 0.154741291 0.094246039 0.185257130
## [73] 0.385517508 0.177752123 0.389528290 0.394998942 0.110376249 0.227467083
## [79] 0.397617014 0.056047512 0.314795073 0.336131852 0.081057824 0.117724335
## [85] 0.396094559 0.358784915 0.183639645 0.366438694 0.372609881 0.354466119
## [91] 0.393249965 0.371271255 0.233700210 0.243675503 0.386195033 0.386429562
## [97] 0.398932285 0.372342580 0.385704744 0.220877218
qnorm(pnorm(norm_data)) ## 量數 = 隨機變數
## [1] 0.02962948 0.07073893 0.86418898 0.42096647 0.19539900 -0.97932071
## [7] -0.69354061 2.14234619 -1.57056208 -2.62636923 -0.29120239 -0.74543378
## [13] 0.85929600 -0.51692443 -1.02976907 0.11226163 0.10638757 -2.44724563
## [19] -1.78341100 0.59758282 -0.02787013 0.07859786 2.41675275 -1.48147830
## [25] 2.01789773 -1.45198133 -2.88243056 0.13368394 -0.80424411 -0.88376270
## [31] 0.71245861 -1.11827727 0.22670229 -0.11311718 -1.31275049 -0.07974084
## [37] 1.88500833 -0.44661547 1.21760517 0.83787449 -0.77856270 0.14818186
## [43] -0.30360615 0.77155701 -1.07495978 1.07161942 1.41143820 0.77581111
## [49] -0.79466093 1.31401031 -0.64135874 1.15363466 -0.12398159 -0.04227629
## [55] -0.29910406 0.74013134 0.51125464 -0.37778214 1.59868945 0.06589137
## [61] 0.52189709 0.14056269 0.49177777 0.76269856 0.67705618 -1.17929289
## [67] -0.26530990 0.94142075 -0.02163105 -1.37627186 1.69876893 -1.23860566
## [73] -0.26164915 1.27155553 -0.21854176 -0.14095148 -1.60307315 1.06001057
## [79] -0.08157793 1.98122032 -0.68832388 0.58534306 1.78530332 1.56235143
## [85] -0.11969776 -0.46063795 1.24566557 0.41227543 -0.36955316 0.48621802
## [91] -0.16953638 0.37916699 -1.03419302 -0.99295449 0.25484990 -0.25245650
## [97] -0.00707900 0.37148998 -0.25978676 1.08739116
比照以上的示範,自由測試秘訣速查表列出的其他機率函式:卜瓦松分佈,二項分佈,均勻分佈。
有上百筆資料時,視覺化是理解資料的最佳方式
plot(dnorm(norm_data)~norm_data) ## 視覺化機率密度函數
plot(pnorm(norm_data)~qnorm(pnorm(norm_data))) ## 視覺化累積機率函數
比照以上的示範,嘗試視覺化秘訣速查表列出的其他機率函式:卜瓦松分佈,二項分佈,均勻分佈。