直截了当的问题,真的。我只是对一些数据进行逻辑回归:
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结果呢?欢迎采用其他方法。
编辑:
下面的丹尼尔给了我一个直截了当的解决方案,我相信这是正确的。我不确定以我的方式拟合逻辑回归和lmplot做什么之间的区别。由于我的数据向下倾斜,我猜我应该镜像我的x轴,或者拟合不同的曲线?
这是lmplot给我的:
这是回归的结果:
好的,我测试了一个解决方案,它的工作原理。试试这个:
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构造函数的预测空间,方法是为其提供一个模拟输入向量,该向量跨越所有可能输入的空间,或者尽可能多地进行。 10/100值是一个很好的数字。