python
import numpy as np
import statsmodels.api as sm
x = np.linspace(0, 10, 100)
y = 2 * x + np.random.normal(0, 1, 100)
X = sm.add_constant(x)
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
residuals = results.resid
influence = results.get_influence()
outliers = influence.outlier_test()["bonf(p)"]
print(outliers)
vif = sm.variance_inflation_factor(X, 1)
print(vif)
het = results.diagn['het_test']['Lagrange multiplier statistic']
print(het)
fig, ax = plt.subplots()
ax.scatter(results.fittedvalues, residuals)
plt.show()
print(sm.stats.normal_ad(residuals))