mu = [14, 23, 22] sigma = [2, 3, 4] tips = ['design', 'build', 'test'] figureIndex = 0 fig = plt.figure(figureIndex, figsize=(10, 8)) color = ['r', 'g', 'b'] ax = fig.add_subplot(111) for i in range(3): x = np.linspace(mu[i] - 3*sigma[i], mu[i] + 3*sigma[i], 100) y_sig = np.exp(-(x - mu[i])**2/(2*sigma[i]**2))/(math.sqrt(2*math.pi)) ax.plot(x, y_sig, color[i], label=tips[i]) ax.legend(loc='best', frameon=False) ax.set_xlabel('# of days') ax.set_ylabel('probability') plt.grid(True) plt.show() size = 100000 samples = [np.random.normal(mu[i], sigma[i], size) for i in range(3)] data = np.zeros(len(samples[1])) for i in range(len(samples[1])): for j in range(3): data[i] += samples[j][i] data[i] = int(data[i]) a, b = count(data) pdf = [x/size for x in b] cdf = np.zeros(len(a)) for i in range(len(a)): if i > 0: cdf[i] += cdf[i - 1] cdf = cdf/size figureIndex += 1 fig = plt.figure(figureIndex, figsize=(10, 8)) ax = fig.add_subplot(211) ax.bar(a, height=pdf, color='blue', edgecolor='white', label='MC PDF') ax.plot(a, pdf) ax.legend(loc='best', frameon=False) ax.set_xlabel('# of days for project') ax.set_ylabel('probability') ax.set_title('Monte Carlo Simulation') ax = fig.add_subplot(212) ax.plot(a, cdf) ax.legend(loc='best', frameon=False) ax.set_xlabel('# of days for project') ax.set_ylabel('probability') ax.grid(True) plt.show()
时间: 2023-06-25 12:04:14 浏览: 71
这段代码实现了蒙特卡罗模拟的概率分布和累积分布函数的绘制。具体来说,代码首先定义了三个平均值 mu 和标准差 sigma,以及对应的项目阶段 tips。然后通过 np.linspace 函数生成一组数据 x,计算出正态分布的概率密度函数 y_sig,并将其绘制在图像中。接着,代码通过 np.random.normal 生成一些随机样本,将三个样本的数据相加得到一个新的数据集 data,并对 data 进行统计,得到概率密度函数和累积分布函数,并将其绘制在图像中。最终通过 plt.show() 函数将图像显示出来。
相关问题
Error in rmvnorm(1, mean = mu2, sigma = sigma2) : 参数没有用(mean = mu2)
这个错误提示表明您在调用 rmvnorm 函数时,给出了一个无效的参数 mean = mu2。这可能是因为 rmvnorm 函数没有名为 mean 的参数。如果您想指定此函数的均值参数,可以使用 m 参数。例如,您可以使用以下代码生成一个二维正态分布的随机样本:
```{r}
library(MASS)
mu <- c(0, 0)
sigma <- matrix(c(1, 0.5, 0.5, 2), nrow = 2)
x <- mvrnorm(n = 100, mu = mu, Sigma = sigma)
```
在这个例子中,我们使用了 mvrnorm 函数而不是 rmvnorm 函数来生成样本,因为 mvrnorm 函数是 MASS 包中用于多元正态分布的函数。我们指定了均值向量 mu 和协方差矩阵 sigma,并使用 n 参数指定要生成的随机样本数量。
Error in rmvnorm(1, mean = mu2, sigma = sigma2) : unused argument (mean = mu2)
这个错误提示是因为你在调用 `rmvnorm()` 函数时使用了一个不支持的参数 `mean`。`rmvnorm()` 函数来自于 `mvtnorm` 包,它的参数列表中没有 `mean` 这个参数。
如果你想指定多元正态分布的均值,可以在生成协方差矩阵时加上均值向量,例如:
```R
library(mvtnorm)
mu <- c(0, 0)
sigma <- matrix(c(1, 0.5, 0.5, 1), nrow = 2, ncol = 2)
x <- rmvnorm(1, mean = mu + 1, sigma = sigma)
```
这里的 `mu` 指定了均值向量,`sigma` 是协方差矩阵。在生成随机样本时,我们需要加上均值向量,以保证生成的随机向量是以 `mu` 为中心的。
希望这可以帮助到你!