gpt4 book ai didi

pandas - 如何清晰地绘制 statsmodels 线性回归 (OLS)

转载 作者:行者123 更新时间:2023-12-03 14:50:09 27 4
gpt4 key购买 nike

问题陈述:

我在 Pandas 数据框中有一些不错的数据。我想对其进行简单的线性回归:

enter image description here

使用 statsmodels,我执行我的回归。现在,我如何获得我的情节?我试过 statsmodels 的 plot_fit 方法,但情节有点古怪:

enter image description here

我希望得到一条代表回归实际结果的水平线。

Statsmodels 有一个 variety of methods for plotting regression ( a few more details about them here ),但它们似乎都不是 super 简单的“只需在数据之上绘制回归线”——plot_fit 似乎是最接近的东西。

问题:

  • 上图第一张来自 pandas 的 plot 函数,它返回一个 matplotlib.axes._subplots.AxesSubplot 。我可以轻松地将回归线覆盖到该图上吗?
  • statsmodels 中有没有我忽略的函数?
  • 有没有更好的方法来拼凑这个数字?

  • 两个相关问题:
  • Plotting Pandas OLS linear regression results
  • Getting the regression line to plot from a Pandas regression

  • 似乎都没有一个好的答案。

    样本数据

    根据@IgorRaush 的要求
            motifScore  expression
    6870 1.401123 0.55
    10456 1.188554 -1.58
    12455 1.476361 -1.75
    18052 1.805736 0.13
    19725 1.110953 2.30
    30401 1.744645 -0.49
    30716 1.098253 -1.59
    30771 1.098253 -2.04

    abline_plot

    我试过这个,但它似乎不起作用......不知道为什么:

    enter image description here

    最佳答案

    正如我在评论中提到的,seaborn是统计数据可视化的绝佳选择。

    import seaborn as sns

    sns.regplot(x='motifScore', y='expression', data=motif)

    sns.regplot

    或者,您可以使用 statsmodels.regression.linear_model.OLS并手动绘制回归线。
    import statsmodels.api as sm

    # regress "expression" onto "motifScore" (plus an intercept)
    model = sm.OLS(motif.expression, sm.add_constant(motif.motifScore))
    p = model.fit().params

    # generate x-values for your regression line (two is sufficient)
    x = np.arange(1, 3)

    # scatter-plot data
    ax = motif.plot(x='motifScore', y='expression', kind='scatter')

    # plot regression line on the same axes, set x-axis limits
    ax.plot(x, p.const + p.motifScore * x)
    ax.set_xlim([1, 2])

    manual

    另一个解决方案是 statsmodels.graphics.regressionplots.abline_plot这消除了上述方法的一些样板。
    import statsmodels.api as sm
    from statsmodels.graphics.regressionplots import abline_plot

    # regress "expression" onto "motifScore" (plus an intercept)
    model = sm.OLS(motif.expression, sm.add_constant(motif.motifScore))

    # scatter-plot data
    ax = motif.plot(x='motifScore', y='expression', kind='scatter')

    # plot regression line
    abline_plot(model_results=model.fit(), ax=ax)

    abline_plot

    关于pandas - 如何清晰地绘制 statsmodels 线性回归 (OLS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261976/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com