尝试执行以下操作。生成30行500个随机数,具有均匀(0,1)分布。
但它只有整数,当我需要带小数位的数字时。
答案 0 :(得分:3)
您的runif
命令不正确。做:
df<-data.frame(replicate(60,runif(300,0,1)))
正如蒂姆和罗兰所指出的,最好(更快)使用:
df<-matrix(runif(60*300),ncol=60)
对于runif
,第一个参数是观察的数量,然后是最小值,然后是最大值,用逗号分隔。
df[1:5,1:5]
X1 X2 X3 X4 X5
1 0.4375043 0.76986901 0.1154772 0.8861121 0.0275067
2 0.4024352 0.19291795 0.7496475 0.5159706 0.8768299
3 0.3164539 0.02212373 0.2091863 0.2792025 0.5175030
4 0.2496215 0.51070780 0.8462652 0.2604232 0.9109863
5 0.8450932 0.68503812 0.2391174 0.0220619 0.4943907
至于你的指数分布,如果我是正确的,如果U是0和1之间的均匀分布,则-ln(U)/ lambda是具有lambda参数的指数分布。 ln函数在R中是log
。
使用以下代码:
require(fitdistrplus)
set.seed(1)
df<-runif(100000,0,1)
df<-(-log(df))
png('fit.png')
descdist(df)
dev.off()
你得到这个情节:数据似乎遵循指数分布(如预期的那样)