python 对一系列数据做正态分布拟合,并用matplotlib绘制出来
时间: 2023-08-11 19:10:34 浏览: 223
可以使用NumPy和SciPy库来进行正态分布拟合,并使用matplotlib库进行可视化。以下是一个示例代码:
```python
import numpy as np
from scipy.stats import norm, kstest
import matplotlib.pyplot as plt
# 生成一组随机数据
data = np.random.normal(loc=10, scale=2, size=1000)
# 计算数据的平均值和标准差
mu, std = norm.fit(data)
# 生成一组正态分布曲线上的数据点
x = np.linspace(norm.ppf(0.01, mu, std), norm.ppf(0.99, mu, std), 100)
# 绘制直方图和正态分布曲线
plt.hist(data, density=True, bins=30, alpha=0.6, color='g')
plt.plot(x, norm.pdf(x, mu, std), 'r-', lw=2)
plt.xlabel('Data')
plt.ylabel('Probability Density')
plt.title('Normal Distribution Fit')
plt.show()
```
这里使用了norm.fit()函数来计算正态分布的平均值和标准差,并使用norm.pdf()函数生成正态分布曲线上的数据点。最终使用plt.hist()函数绘制直方图,使用plt.plot()函数绘制正态分布曲线。
相关问题
python 对一系列数据做非标准正态分布拟合,并用matplotlib绘制出来
您好,欢迎和我对话!针对您的问题,可以使用scipy库中的stats模块来进行非标准正态分布的拟合,具体方法如下:
```
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
# 生成一组非正态分布的数据
data = np.random.laplace(loc=10, scale=3, size=5000)
# 对数据进行非标准正态分布拟合
fit_alpha, fit_loc, fit_beta = stats.laplace.fit(data)
# 绘制原始数据的直方图
plt.hist(data, bins=50, density=True, alpha=0.6, color='g')
# 根据拟合参数生成拟合曲线并绘制
x = np.linspace(stats.laplace.ppf(0.01, fit_alpha, fit_loc, fit_beta),
stats.laplace.ppf(0.99, fit_alpha, fit_loc, fit_beta), 100)
plt.plot(x, stats.laplace.pdf(x, fit_alpha, fit_loc, fit_beta), 'r-', lw=2)
# 样本分布与拟合曲线的比较
plt.title('Laplace distribution fit')
plt.xlabel('data')
plt.ylabel('PDF')
plt.show()
```
以上代码就可以实现对一组非标准正态分布的数据进行拟合,并用matplotlib绘制出来。希望能对您有所帮助!
python对数据做对数正态分布拟合
很高兴回答你的问题!对于这个问题,可以使用 Python 中的 SciPy 库来进行对数正态分布拟合。具体实现可以参考以下代码:
```python
import numpy as np
from scipy.stats import lognorm
import matplotlib.pyplot as plt
# 生成数据
data = np.random.lognormal(mean=2, sigma=0.5, size=1000)
# 拟合对数正态分布
shape, loc, scale = lognorm.fit(data)
# 绘制拟合结果
x = np.linspace(min(data), max(data), 1000)
pdf = lognorm.pdf(x, shape, loc, scale)
plt.plot(x, pdf, 'r-', label='lognormal pdf')
plt.hist(data, bins=50, density=True, alpha=0.5)
plt.legend()
plt.show()
```
这段代码中,`data` 是一个数据数组,使用 `lognorm.fit(data)` 进行对数正态分布拟合,返回该分布的参数 `shape`、`loc` 和 `scale`。然后,通过 `lognorm.pdf(x, shape, loc, scale)` 可以计算出分布函数的概率密度函数,最后可用 `plt.plot()` 绘制出来。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)