In [23]:
import math
import matplotlib.pyplot as plt
import random
In [45]:
x=random.sample(range(10000),300)
In [46]:
y=[math.sqrt(xx)+random.randint(0,100) for xx in x]
In [47]:
plt.scatter(x,y)
Out[47]:
In [48]:
plt.show()
In [49]:
import numpy as np
import pandas as pd
from numpy.linalg import inv
from numpy import dot
In [54]:
Xb=pd.DataFrame()
Xb['data']=x
Xb['constant']=np.ones(300)
XTy/(XTX)就是这个公式,求出了线性回归参数
In [55]:
np.dot(np.linalg.inv(np.dot(Xb.T,Xb)),np.dot(Xb.T,y))
Out[55]:
In [56]:
import statsmodels.api as sm
In [65]:
dx=pd.Series(x)
dy=pd.Series(y)
dx=sm.add_constant(dx)
In [66]:
linear_regression=sm.OLS(dy,dx)
In [67]:
model_fitted=linear_regression.fit()
In [68]:
model_fitted.summary()
Out[68]:
In [69]:
xp=20
Xp=np.array([1,xp])
print(model_fitted.predict(Xp))
In [71]:
np.dot(Xp,np.array([7.45185183e+01,8.66251066e-03]))
Out[71]:
In [ ]: