数学建模习题10.1

`import numpy as np
import statsmodels.api as sm
import pylab as plt

def check(d):
x0 = d[:, 0]
y0 = d[:, 1]
data = {'x': x0, 'y': y0}
model = sm.formula.ols('y ~ x', data=data).fit() # 拟合线性回归模型
print(model.summary())
print(model.outlier_test()) # 输出已知数据的野值检验
print(model.mse_resid())
pred = model.get_prediction(data)
df = pred.summary_frame(alpha=0.05)
dfv = df.values
low, upp = dfv[:, 1], dfv[:, 2] # 置信下限上限
r = (upp - low) / 2 # 置信半径
num = np.arange(1, len(x0) + 1)
plt.errorbar(num, model.resid, r, fmt='o')
plt.show()

a = np.loadtxt('data10_1.txt')
plt.rc('font', size=15)
plt.plot(a[:, 0], a[:, 1], 'o')
plt.figure()
check(a)

a2 = a
a2 = np.delete(a2, 8, axis=1) # 删除第9列
check(a2)

a3 = a2
a3 = np.delete(a3, 4, axis=1) # 删除第5列
check(a3)

print("学号后两位:05")`

posted on 2024-12-20 09:47  VVV1  阅读(19)  评论(0)    收藏  举报