點選檢視程式碼
import numpy as np
import statsmodels.formula.api as smf
import pylab as plt
a = np.loadtxt('F:\python數學建模與演算法\源程式\《Python數學建模演算法與應用》程式和資料//10第10章 迴歸分析/data10_4.txt'); x1 = a[0]; x2 = a[1]; y = a[2]
plt.rc('axes', unicode_minus=False); plt.rc('font', family='SimHei')
plt.plot(x1, y, '*', label='$x_1$'); plt.plot(x2, y, 'o', label='$x_2$')
d = {'y': y, 'x1': x1, 'x2': x2}
re1 = smf.ols('y~x1+x2', d).fit()
print('線性迴歸的殘差方差:', re1.mse_resid)
re2 = smf.ols('y~x1+x2+I(x1**2)+I(x2**2)', d).fit()
print('純二次的殘差方差:', re2.mse_resid)
re3 = smf.ols('y~x1*x2', d).fit()
print('交叉的殘差方差:', re3.mse_resid)
re4 = smf.ols('y~x1*x2+I(x1**2)+I(x2**2)', d).fit()
print('完全二次的殘差方差:', re4.mse_resid)
print('預測值:', re2.predict({'x1': 170, 'x2': 160}))
print(re2.summary()); plt.legend(); plt.show()