Python 杂乱拟合线图

Python 杂乱拟合线图,python,matplotlib,statsmodels,Python,Matplotlib,Statsmodels,我生成了一些与log(x)呈线性关系的数据y。我把y和x放在一个数据框中,按x的值排序,拟合模型,然后尝试沿着拟合线绘制数据点。然而,我得到的是一个非常混乱的装配线。我一定做错了什么。这在R中很容易实现,但在statsmodels中。。。。我还是不明白为什么。需要帮助。提前谢谢 import numpy as np import pandas as pd import statsmodels.formula.api as smf import matplotlib.pyplot as plt %

我生成了一些与log(x)呈线性关系的数据y。我把y和x放在一个数据框中,按x的值排序,拟合模型,然后尝试沿着拟合线绘制数据点。然而,我得到的是一个非常混乱的装配线。我一定做错了什么。这在R中很容易实现,但在statsmodels中。。。。我还是不明白为什么。需要帮助。提前谢谢

import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
%matplotlib inline
B0 = 3
B1 = 0.5
X = np.random.rand(1000)
epsilon = np.random.normal(0,0.1, size=1000)
y=B0 + B1*np.log(X)+epsilon
df1 = pd.DataFrame({'Y':y, 'X':X})
df1.sort_values('X', inplace=True)
model1 = smf.ols ('Y~np.log(X)', data=df1).fit()

plt.scatter(df1.X, df1.Y)
plt.plot(df1.X, model1.predict(np.log(df1.X)), 'r-')
这就是我得到的:


有什么东西把预测的指数弄乱了。这可能是索引处理中的错误。在predict中避免使用pandas和patsy会生成一个好看的图。不要将log(X)传递给predict,只需传入X。当您使用公式拟合模型时,预测的设计矩阵将从新的X中重建(如果提供,如下所示)。statsmodels master和当前维护0.8(自8月起)中存在错误当索引未排序时。