## 8.3 生成隨機數
運行蒙特卡羅模擬需要我們生成隨機數。只有通過物理過程才能生成真正的隨機數(即完全不可預測的數),例如原子衰變或骰子滾動,這些過程很難獲得和/或太慢,無法用于計算機模擬(盡管可以從[NIST 隨機信標](https://www.nist.gov/programs-projects/nist-randomness-beacon%5D))。
一般來說,我們使用計算機算法生成的 _ 偽隨機 _ 數字來代替真正的隨機數;從難以預測的意義上講,這些數字看起來是隨機的,但實際上這些數字序列在某一點上會重復出現。例如,R 中使用的隨機數生成器將在個數之后重復。這遠遠超過了宇宙歷史上的秒數,我們一般認為這對于統計分析的大多數目的來說都是好的。
在 R 中,有一個函數可以為每個主要概率分布生成隨機數,例如:
* `runif()`-均勻分布(0 和 1 之間的所有值相等)
* `rnorm()`-正態分布
* `rbinom()`-二項分布(如擲骰子、擲硬幣)
圖[8.1](#fig:rngExamples)顯示了使用`runif()`和`rnorm()`函數生成的數字示例,這些函數使用以下代碼生成:
```r
p1 <-
tibble(
x = runif(10000)
) %>%
ggplot((aes(x))) +
geom_histogram(bins = 100) +
labs(title = "Uniform")
p2 <-
tibble(
x = rnorm(10000)
) %>%
ggplot(aes(x)) +
geom_histogram(bins = 100) +
labs(title = "Normal")
plot_grid(p1, p2, ncol = 3)
```

圖 8.1 由均勻(左)或正態(右)分布生成的隨機數示例。
如果您有一個 _ 分位數 _ 函數用于分發,您還可以為任何分發生成隨機數。這是累積分布函數的倒數;分位數函數不是確定一組值的累積概率,而是確定一組累積概率的值。使用分位數函數,我們可以從均勻分布中生成隨機數,然后通過它的分位數函數將其映射到興趣分布中。
默認情況下,每次運行上面描述的隨機數生成器函數之一時,R 都會生成一組不同的隨機數。但是,通過將所謂的 _ 隨機種子 _ 設置為特定值,也可以生成完全相同的隨機數集。我們將在本書中的許多示例中這樣做,以確保示例是可重復的。
```r
# if we run the rnorm() command twice, it will give us different sets of pseudorandom numbers each time
print(rnorm(n = 5))
```
```r
## [1] 1.48 0.18 0.21 -0.15 -1.72
```
```r
print(rnorm(n = 5))
```
```r
## [1] -0.691 -2.231 0.391 0.029 -0.647
```
```r
# if we set the random seed to the same value each time, then it will give us the same series of pseudorandom numbers each time.
set.seed(12345)
print(rnorm(n = 5))
```
```r
## [1] 0.59 0.71 -0.11 -0.45 0.61
```
```r
set.seed(12345)
print(rnorm(n = 5))
```
```r
## [1] 0.59 0.71 -0.11 -0.45 0.61
```
- 前言
- 0.1 本書為什么存在?
- 0.2 你不是統計學家-我們為什么要聽你的?
- 0.3 為什么是 R?
- 0.4 數據的黃金時代
- 0.5 開源書籍
- 0.6 確認
- 1 引言
- 1.1 什么是統計思維?
- 1.2 統計數據能為我們做什么?
- 1.3 統計學的基本概念
- 1.4 因果關系與統計
- 1.5 閱讀建議
- 2 處理數據
- 2.1 什么是數據?
- 2.2 測量尺度
- 2.3 什么是良好的測量?
- 2.4 閱讀建議
- 3 概率
- 3.1 什么是概率?
- 3.2 我們如何確定概率?
- 3.3 概率分布
- 3.4 條件概率
- 3.5 根據數據計算條件概率
- 3.6 獨立性
- 3.7 逆轉條件概率:貝葉斯規則
- 3.8 數據學習
- 3.9 優勢比
- 3.10 概率是什么意思?
- 3.11 閱讀建議
- 4 匯總數據
- 4.1 為什么要總結數據?
- 4.2 使用表格匯總數據
- 4.3 分布的理想化表示
- 4.4 閱讀建議
- 5 將模型擬合到數據
- 5.1 什么是模型?
- 5.2 統計建模:示例
- 5.3 什么使模型“良好”?
- 5.4 模型是否太好?
- 5.5 最簡單的模型:平均值
- 5.6 模式
- 5.7 變異性:平均值與數據的擬合程度如何?
- 5.8 使用模擬了解統計數據
- 5.9 Z 分數
- 6 數據可視化
- 6.1 數據可視化如何拯救生命
- 6.2 繪圖解剖
- 6.3 使用 ggplot 在 R 中繪制
- 6.4 良好可視化原則
- 6.5 最大化數據/墨水比
- 6.6 避免圖表垃圾
- 6.7 避免數據失真
- 6.8 謊言因素
- 6.9 記住人的局限性
- 6.10 其他因素的修正
- 6.11 建議閱讀和視頻
- 7 取樣
- 7.1 我們如何取樣?
- 7.2 采樣誤差
- 7.3 平均值的標準誤差
- 7.4 中心極限定理
- 7.5 置信區間
- 7.6 閱讀建議
- 8 重新采樣和模擬
- 8.1 蒙特卡羅模擬
- 8.2 統計的隨機性
- 8.3 生成隨機數
- 8.4 使用蒙特卡羅模擬
- 8.5 使用模擬統計:引導程序
- 8.6 閱讀建議
- 9 假設檢驗
- 9.1 無效假設統計檢驗(NHST)
- 9.2 無效假設統計檢驗:一個例子
- 9.3 無效假設檢驗過程
- 9.4 現代環境下的 NHST:多重測試
- 9.5 閱讀建議
- 10 置信區間、效應大小和統計功率
- 10.1 置信區間
- 10.2 效果大小
- 10.3 統計能力
- 10.4 閱讀建議
- 11 貝葉斯統計
- 11.1 生成模型
- 11.2 貝葉斯定理與逆推理
- 11.3 進行貝葉斯估計
- 11.4 估計后驗分布
- 11.5 選擇優先權
- 11.6 貝葉斯假設檢驗
- 11.7 閱讀建議
- 12 分類關系建模
- 12.1 示例:糖果顏色
- 12.2 皮爾遜卡方檢驗
- 12.3 應急表及雙向試驗
- 12.4 標準化殘差
- 12.5 優勢比
- 12.6 貝葉斯系數
- 12.7 超出 2 x 2 表的分類分析
- 12.8 注意辛普森悖論
- 13 建模持續關系
- 13.1 一個例子:仇恨犯罪和收入不平等
- 13.2 收入不平等是否與仇恨犯罪有關?
- 13.3 協方差和相關性
- 13.4 相關性和因果關系
- 13.5 閱讀建議
- 14 一般線性模型
- 14.1 線性回歸
- 14.2 安裝更復雜的模型
- 14.3 變量之間的相互作用
- 14.4“預測”的真正含義是什么?
- 14.5 閱讀建議
- 15 比較方法
- 15.1 學生 T 考試
- 15.2 t 檢驗作為線性模型
- 15.3 平均差的貝葉斯因子
- 15.4 配對 t 檢驗
- 15.5 比較兩種以上的方法
- 16 統計建模過程:一個實例
- 16.1 統計建模過程
- 17 做重復性研究
- 17.1 我們認為科學應該如何運作
- 17.2 科學(有時)是如何工作的
- 17.3 科學中的再現性危機
- 17.4 有問題的研究實踐
- 17.5 進行重復性研究
- 17.6 進行重復性數據分析
- 17.7 結論:提高科學水平
- 17.8 閱讀建議
- References