可用函数
1.metadata(x) :Print the metadata for the distribution
2.summary(object, n=10000, seed=): Produce a summary of the distribution
3.rfunc(x, n) : Generate n random drawns of the distribution
4.plot(x, n= 10000) Produce a density plot of the distribution
5.ggDISTRIBUTION(x, n= 10000) : produce a density plot of the distribution using ggplot2
6. new_MIXTURE(listdistr, mixture) :用于生成混合分布,listdistr是一个包含DISTRIBUTION对象的list,mixture是一个求和等于1的概率向量。
7. 当分布维度不同时,new_CONVOLUTION_assoc
类的函数对维度名相同的随机变量进行运算,对于不相同的维度名称的不做处理。new_CONVOLUTION_comb
类的函数将对全部维度进行运算。
计算法则
在相同维度情形下,DISTRIBUTION 对象之间的+,-,*,/和new_CONVOLUTION(listdistr, op, omit_NA = FALSE)
函数的作用是相同的。参数listdistr
是一个包含 DISTRIBUTION 对象的list, 下面是一个简写:
new_SUM(listdistr, omit_NA = FALSE)
new_SUBTRACTION(listdistr, omit_NA = FALSE)
new_MULTIPLICATION(listdistr, omit_NA = FALSE)
new_DIVISION(listdistr, omit_NA = FALSE)
DISTRIBUTION 类可以产生的分布类别
实例1:进行随机变量之间的运算
library(convdistr)
library(ggplot2)
a <- new_NORMAL(1,0.5)
b <- new_POISSON(5)
c <- new_BETA(10,20)
res <- a + b * c
metadata(res)
#> distribution rvar
#> 1 CONVOLUTION 2.666667
summary(res,seed=10)
rvar:表示随机变量
seed:是随机数种子,用在summary函数中
oval:一个观测值
nsample:样本量
mean_:样本均值
sd_:样本标准差
lci_:置信区间下限
uci_:置信区间上限
median_:样本中位数
绘制频率直方图
ggDISTRIBUTION(res) + ggtitle("a + b * c")
实例2:根据特定概率生成混合分布
new_MIXTURE(listdistr, mixture)
:用于生成混合分布,listdistr是一个包含DISTRIBUTION对象的list,mixture是一个求和等于1的概率向量。
d1 <- new_NORMAL(1,0.5)
d2 <- new_NORMAL(5,0.5)
d3 <- new_NORMAL(10,0.5)
dmix <- new_MIXTURE(list(d1,d2,d3),c(0.1,0.3,0.6))
summary(dmix)
# distribution varname oval nsample mean_ sd_ lci_ median_
# MIXTURE rvar 7.6 10000 7.628108 3.151658 0.6508413 9.518044
# uci_
# 10.85935
ggDISTRIBUTION(dmix)
实例3:不同维度分布之间的卷积
当分布维度不同时,new_CONVOLUTION_assoc
类的函数对维度名相同的随机变量进行运算,对于不相同的维度名称的不做处理。new_CONVOLUTION_comb
类的函数将对全部维度进行运算。
d1 <- new_MULTINORMAL(c(0,1), matrix(c(1,0.3,0.3,1), ncol = 2), p_dimnames = c("A","B"))
d2 <- new_MULTINORMAL(c(3,4), matrix(c(1,0.3,0.3,1), ncol = 2), p_dimnames = c("B","C"))
summary(d1)
# distribution varname oval nsample mean_ sd_ lci_
# 1 MULTINORMAL A 0 10000 -0.004687038 1.0041911 -1.9912210
# 2 MULTINORMAL B 1 10000 0.987839693 0.9965871 -0.9751067
# median_ uci_
# 1 -0.01103639 1.982753
# 2 0.98429613 2.964196
summary(d2)
# distribution varname oval nsample mean_ sd_ lci_ median_
# 1 MULTINORMAL B 3 10000 2.987187 1.0086273 1.018242 2.988143
# 2 MULTINORMAL C 4 10000 3.996152 0.9989062 2.035634 3.999738
# uci_
# 1 4.959087
# 2 5.939658
summary(new_SUM_assoc(d1,d2))
# distribution varname oval nsample mean_ sd_ lci_
# 1 CONVOLUTION A 0 10000 0.00180548 1.0077482 -1.993924
# 2 CONVOLUTION C 4 10000 3.99394719 0.9930702 2.071947
# 3 CONVOLUTION B 4 10000 4.00697911 1.4107317 1.247139
# median_ uci_
# 1 0.01675671 1.975938
# 2 3.98663174 5.986217
# 3 3.98810120 6.753516
summary(new_SUM_comb(d1,d2))
# distribution varname oval nsample mean_ sd_ lci_ median_
# 1 CONVOLUTION A_B 3 10000 2.991535 1.422924 0.2134336 2.975806
# 2 CONVOLUTION B_B 4 10000 3.984091 1.433978 1.1705028 3.975180
# 3 CONVOLUTION A_C 4 10000 3.995982 1.436783 1.1971936 3.994802
# 4 CONVOLUTION B_C 5 10000 4.988538 1.439607 2.1692893 4.982948
# uci_
# 1 5.807620
# 2 6.801032
# 3 6.798537
# 4 7.832810