1. 线性回归模型
线性回归模型是最基本的统计模型之一,用于研究两个或多个变量之间的线性关系。该模型假设因变量与自变量之间存在线性关系,即因变量可以表示为自变量的线性组合加上一个误差项。
代码示例(Python)
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 假设有以下数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 2, 2.5, 3.5, 4.5])
# 创建线性回归模型
model = LinearRegression()
# 拟合模型
model.fit(X, y)
# 输出系数
print("斜率:", model.coef_)
print("截距:", model.intercept_)
# 绘制图形
plt.scatter(X, y)
plt.plot(X, model.predict(X), color='red')
plt.show()
2. 多项式回归模型
多项式回归模型是线性回归模型的扩展,它允许因变量与自变量之间存在非线性关系。模型通过引入自变量的多项式来模拟这种非线性关系。
代码示例(Python)
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# 假设有以下数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 4, 9, 16, 25])
# 创建多项式特征
poly = PolynomialFeatures(degree=2)
# 转换特征
X_poly = poly.fit_transform(X)
# 创建线性回归模型
model = LinearRegression()
# 拟合模型
model.fit(X_poly, y)
# 输出系数
print("系数:", model.coef_)
print("截距:", model.intercept_)
# 绘制图形
plt.scatter(X, y)
plt.plot(X, model.predict(X_poly), color='red')
plt.show()
3. 指数平滑模型
指数平滑模型是一种时间序列预测模型,适用于具有趋势和季节性的时间序列数据。模型通过加权移动平均来预测未来值,其中较近的数据点权重较大。
代码示例(Python)
from statsmodels.tsa.arima.model import ARIMA
# 假设有以下时间序列数据
X = np.array([1, 2, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5])
# 创建ARIMA模型
model = ARIMA(X, order=(1, 1, 1))
# 拟合模型
model_fit = model.fit()
# 预测未来值
forecast = model_fit.forecast(steps=3)
# 输出预测结果
print("预测值:", forecast)
# 绘制图形
plt.plot(X, label='实际值')
plt.plot(np.arange(len(X), len(X) + 3), forecast, label='预测值', linestyle='--')
plt.legend()
plt.show()
4. 时间序列模型
时间序列模型是一种用于分析时间序列数据的统计模型,它考虑了时间序列数据中的时间依赖性和自相关性。常见的模型包括自回归模型(AR)、移动平均模型(MA)和自回归移动平均模型(ARMA)。
代码示例(Python)
from statsmodels.tsa.arima.model import ARIMA
# 假设有以下时间序列数据
X = np.array([1, 2, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5])
# 创建ARIMA模型
model = ARIMA(X, order=(2, 1, 1))
# 拟合模型
model_fit = model.fit()
# 预测未来值
forecast = model_fit.forecast(steps=3)
# 输出预测结果
print("预测值:", forecast)
# 绘制图形
plt.plot(X, label='实际值')
plt.plot(np.arange(len(X), len(X) + 3), forecast, label='预测值', linestyle='--')
plt.legend()
plt.show()
5. 随机游走模型
随机游走模型是一种假设时间序列数据具有随机游走特性的统计模型。该模型认为时间序列的未来值仅取决于当前值,而与过去值无关。
代码示例(Python)
import numpy as np
import matplotlib.pyplot as plt
# 生成随机游走数据
X = np.random.rand(100)
for i in range(1, 100):
X[i] = X[i - 1] + np.random.randn()
# 绘制图形
plt.plot(X)
plt.show()
6. 贝叶斯网络模型
贝叶斯网络模型是一种用于表示变量之间概率关系的图形模型。该模型通过条件概率表(CP表)来描述变量之间的依赖关系。
代码示例(Python)
import numpy as np
from pgmpy.models import BayesianModel
from pgmpy.factors import TabularCPD
# 定义变量和CP表
variables = ['A', 'B', 'C', 'D']
cpd = {
'A': TabularCPD(variables=['A'], variable_card=2, values=[[0.7, 0.3]]),
'B': TabularCPD(variables=['B'], variable_card=2, values=[[0.6, 0.4]]),
'C': TabularCPD(variables=['C'], variable_card=2, values=[[0.5, 0.5]]),
'D': TabularCPD(variables=['D'], variable_card=2, values=[[0.4, 0.6]])
}
# 创建贝叶斯网络模型
model = BayesianModel(variables, cpd)
# 输出模型
print(model)
7. 机器学习模型
机器学习模型是一类通过数据学习特征和规律,从而对未知数据进行预测或分类的模型。常见的机器学习模型包括决策树、支持向量机、神经网络等。
代码示例(Python)
from sklearn.tree import DecisionTreeClassifier
# 假设有以下数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([0, 1, 0, 1, 0])
# 创建决策树模型
model = DecisionTreeClassifier()
# 拟合模型
model.fit(X, y)
# 输出模型
print("特征重要性:", model.feature_importances_)
print("决策树结构:", model)
# 预测新数据
print("预测值:", model.predict([[3]]))
