在數值計算軟體的應用上,生成各類符合要求的隨機亂數分布以進一步驗證模型,幾乎是基本需求。R語言中,可利用rnorm指令來生成符合某個平均值和某個標準差要求的常態亂數分布。另外,亦可善用rnorm來生成時間序列亂數。
a.生成平均數=5,標準差=1的25個常態亂數分布數據,數字取至小數點第二位,並形成5X5的矩陣。若要使亂數不隨每次執行結果而改變,可結合set.seed(1)定義編號1的隨機亂數群,可參考[R]如何利用seed和sample指令,生成各類的隨機亂數?
#set seed
set.seed(1)
#matrix data
a<-matrix(round(rnorm(25, mean=5, sd=1),2),5,5)
#輸出結果
> a
[,1] [,2] [,3] [,4] [,5]
[1,] 4.94 6.36 4.59 4.84 4.29
[2,] 4.84 4.90 4.61 4.75 5.36
[3,] 3.53 5.39 4.94 5.70 5.77
[4,] 4.52 4.95 6.10 5.56 4.89
[5,] 5.42 3.62 5.76 4.31 5.88
另外,可進一步將上述矩陣轉化成數列,並繪製成圖以檢視其分布。
#matrix to series
b<-c(a)
#輸出結果
> b
[1] 4.94 4.84 3.53 4.52 5.42 6.36 4.90 5.39 4.95 3.62 4.59 4.61 4.94 6.10 5.76 4.84
[17] 4.75 5.70 5.56 4.31 4.29 5.36 5.77 4.89 5.88
library(xts)
#set.seed
set.seed(2)
#Data
x1<-xts(rnorm(30,mean=5, sd=1)+exp(c(1:30)/50),seq(as.POSIXct("2020-01-01"),len =30, by="day"))
#plot
plot(x1)
#輸出結果
> x1
[,1]
2020-01-01 5.123287
2020-01-02 6.225660
2020-01-03 7.649682
2020-01-04 4.952911
2020-01-05 6.024919
2020-01-06 6.259917
2020-01-07 6.858229
2020-01-08 5.933813
2020-01-09 8.181691
2020-01-10 6.082616
2020-01-11 6.663727
2020-01-12 7.253002
2020-01-13 5.904235
2020-01-14 5.283461
2020-01-15 8.132088
2020-01-16 4.066059
2020-01-17 7.283552
2020-01-18 6.469136
2020-01-19 7.475113
2020-01-20 6.924090
2020-01-21 8.612781
2020-01-22 5.352781
2020-01-23 8.173712
2020-01-24 8.570726
2020-01-25 6.653659
2020-01-26 4.230321
2020-01-27 7.193244
2020-01-28 6.154114
2020-01-29 7.578242
2020-01-30 7.111756
沒有留言:
張貼留言