可视化逻辑回归与统计模型的拟合

时间:2018-09-10 19:34:56

标签: python statistics logistic-regression statsmodels

直截了当的问题。我只是对一些数据进行逻辑回归:

logit = sm.Logit(df.flow2, df.latency_condition)
result = logit.fit()

print(result.summary())

哪种产量:

                          Logit Regression Results                           
==============================================================================
Dep. Variable:                  flow2   No. Observations:                 5930
Model:                          Logit   Df Residuals:                     5929
Method:                           MLE   Df Model:                            0
Date:                Mon, 10 Sep 2018   Pseudo R-squ.:                 -0.3009
Time:                        21:18:35   Log-Likelihood:                -3927.8
converged:                       True   LL-Null:                       -3019.2
                                        LLR p-value:                       nan
=====================================================================================

我现在想将这个结果绘制在我的数据点之上,但是我不知道该怎么做。我用seaborn绘制了回归图:

sns.lmplot(x="latency_condition", logistic=True, y="flow2", data=df)
plt.show()

我知道lmplot使用statsmodels,但是我不确定我如何拟合模型与lmplot完全相同。另外,我只希望能够绘制完整的逻辑回归曲线(从y = 1到y = 0)。那么如何绘制此statsmodels结果呢?欢迎使用其他方法。

编辑:

下面的丹尼尔(Daniel)给了我一个简单的解决方案,我相信这是正确的。我不确定以我的方式拟合逻辑回归与lmplot做什么有什么区别。我猜测由于数据的向下倾斜,我应该镜像x轴还是拟合其他曲线?

这是lmplot给我的:

lmplot

这是回归的结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

好,所以我测试了一个解决方案,它可以工作。试试这个:

import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt

HOW_MANY = 10
x = np.random.randn(HOW_MANY)

y = np.linspace(0,1,HOW_MANY)
df = pd.DataFrame({'x':x,'y':y})
logit = sm.Logit(df['y'],df['x']).fit()

pred_input = np.linspace(x.min(),x.max(),HOW_MANY)
predictions = logit.predict(pred_input)
plt.scatter(df['x'],df['y'])
plt.plot(pred_input,predictions,c='red')
plt.show()

如果要将红色曲线进一步向右或向左延伸,只需传递一个跨越较大范围的pred_input数组即可。

  

我知道lmplot使用statsmodels,但是我不确定我如何拟合模型与lmplot完全相同。

您没有任何保证,因为sns.lmplot()将按照您的建议调用新的回归值。您想通过向Logit构造函数提供一个模拟输入向量来绘制Logit构造函数的预测空间,该模拟输入向量跨越所有可能输入的空间,或者尽可能多地输入。 10/100值是一个很好的数字。