python - 如何使用 matplotlib 绘制线段的线性回归

标签 python matplotlib statistics

我有一些数据用 matplotlib 绘制为线,长度为 250 点。我可以拟合整个数据集。但是,我希望使用最小二乘法拟合并绘制最后 50 个数据点的回归线。最好的方法是什么? (下面是我的情节代码。)

j = 0
for line, rank in sortedSymbols:
    series = getattr(self, line)["CLOSE"]
    dates = pd.to_datetime(getattr(self, line)["DATE"]).dt.date
    ax.plot(dates.iloc[-250:], series.iloc[-250:]/series.iloc[-250] * (40+j), label = line)
    j += 10

最佳答案

有很多不同的方法可以做到这一点。但是,如果没有有关您的数据结构以及您到底在寻找什么的更多信息,这是可以完成的一种方法。 np.polyfit()(文档 here )对列表或数组中的顺序数据使用 OLS 回归。

import numpy as np

j = 0
for line, rank in sortedSymbols:
    series = getattr(self, line)["CLOSE"]
    dates = pd.to_datetime(getattr(self, line)["DATE"]).dt.date

    #Calculate the slope and intercept of fitted curve based on last 50 datapoint using the values 
    #you plotted before with 1 specified for a linear best fit line
    slope, intercept = np.polyfit(dates.iloc[-50:].index,series.iloc[-50:]/series.iloc[-250] * (40+j),1)

    #plot the trend line
    ax.plot(dates.iloc[-50:],slope*dates.iloc[-50:].index+intercept,label=line)


    j += 10

关于python - 如何使用 matplotlib 绘制线段的线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57014336/

相关文章:

python - 如何在 Python Pandas 中使用 groupby().apply() 而不是在整个数据集上运行循环?

python - 使用具有 > 2 个参数的用户定义函数的 matplotlib 绘制 3d 曲面

python - 如何在 matplotlib 上获取 XKCD 字体

python - 从 python 中的 {x,y,z}-散点数据绘制 3D 表面

statistics - 是否可以在服务器端使用谷歌分析?

matlab - 从向量创建累积分布

r - 从 r 中的 aov 对象中提取均方值的最佳方法

javascript - 如何使用正则表达式提取 JavaScript 变量

python - Django-Admin 面板不会显示通过 phpmyadmin 插入的记录?

python - Matplotlib colorbar - 更改了限制行为