Answers:
(1)这是生成模拟时间序列所需的CDF。要构建它,首先要对价格变化/回报进行直方图绘制。从您最左侧填充的垃圾箱开始,累计垃圾箱总数。通过除以总箱数来归一化您的新功能。您剩下的是CDF。这是一些实现技巧的numpy代码:
# Make a histogram of price changes
counts,bin_edges = np.histogram(deltas,numbins,normed=False) # numpy histogram
# Make a CDF of the price changes
n_counts,bin_edges2 = np.histogram(deltas,numbins,normed=True)
cdf = np.cumsum(n_counts) # cdf not normalized, despite above
scale = 1.0/cdf[-1]
ncdf = scale * cdf
(2)要生成相关的拣货,请使用copula。请参阅我先前有关生成相关时间序列的问题的答案。
第一个问题的答案是建立模型。在您的情况下,这意味着选择分布并估算其参数。
有了发行版后,您可以使用Gibbs或Metropolis算法从中进行采样。
在旁注中,您是否真的需要从此分布中取样?通常,兴趣在于分布的某些特征。您可以通过引导程序使用经验分布来估计它,或者再次为此特征建立模型。
使用ecdf()
函数R ...可以解决问题的第一部分
# simulate some data...
N <- 1000
fdata <- c( rnorm(N %/% 2, mean=14), rnorm(N %/% 2, mean=35))
# here's the Empirical CDF of that data...
E1 <- ecdf(fdata)
plot(E1)
# now simulate 1000 numbers from this ECDF...
ns <- 1000
ans <- as.numeric(quantile(E1, runif(ns)))
hist(ans,pro=T,nclass=113,col='wheat2')