关于多元线性回归分析——Python&SPSS
概述
多元线性回归是基于多个自变量与一个因变量之间的关系,通过回归分析建立数学模型的过程。在分析数据和预测未来趋势上,多元线性回归分析有着广泛应用。
本文将分别介绍Python和SPSS两种工具如何进行多元线性回归分析,并提供两个示例供读者参考。
Python 多元线性回归分析
准备工作
在Python中,我们需要导入一些包来完成多元线性回归分析。首先是pandas和numpy用于数据的处理,还需要statsmodels和psycopg2用于回归分析的建立。
import pandas as pd
import numpy as np
import statsmodels.api as sm
import psycopg2
数据加载
接下来我们需要加载数据。可以通过pandas读取csv文件或者从数据库中查询得到数据。此处我们举一个从数据库中查询的例子。
conn = psycopg2.connect(database="database",
user="user",
password="password",
host="localhost",
port="5432")
sql = "SELECT * FROM mytable"
data = pd.read_sql_query(sql, conn)
数据清洗
数据清洗部分需要根据数据的情况进行选择性处理,比如删除空值或异常值等。这里我们假设数据已经清洗好。
回归分析
主要包括变量筛选和模型建立。根据问题需求和实际情况,选择影响因变量的自变量进行分析。首先要对数据进行标准化处理,避免有量纲不同的因素之间比较得不到具体数值。然后将数据分为训练集和测试集。
# 标准化处理
mean = data.mean()
std = data.std()
data = (data - mean) / std
# 划分训练集和测试集
np.random.seed(0)
index = np.random.permutation(len(data))
train_index = index[:int(len(index) * 0.7)]
test_index = index[int(len(index) * 0.7):]
train_data = data.iloc[train_index, :]
test_data = data.iloc[test_index, :]
# 分离因变量和自变量
y_train = train_data.pop('Y')
x_train = train_data
y_test = test_data.pop('Y')
x_test = test_data
接下来是模型的建立。我们使用ols方法建立回归分析模型,其中Y代表因变量,X代表自变量。
ols_result = sm.OLS(y_train, sm.add_constant(x_train)).fit()
模型评估
模型的评估方面,我们需要主要的是模型的性能和预测精度。首先查看回归系数、残差、决定系数、F值和p值等指标,以了解模型哪些地方可以进一步优化。
print(ols_result.summary())
对测试集进行预测。
y_predict = ols_result.predict(sm.add_constant(x_test))
查看预测结果的误差和精确度。
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
print(f"模型R方:{r2_score(y_test, y_predict)}")
print(f"均方误差:{mean_squared_error(y_test, y_predict)}")
SPSS 多元线性回归分析
准备工作
首先打开SPSS软件,在主界面选择File -> New -> Data,新建文件并输入变量值。
回归分析
选择Analyze -> Regression -> Linear进行分析。在“Linear Regression: Linear Model”中,在“Dependent”选项卡中输入因变量名,从左侧“Independent”中拖动自变量到右侧面板中。在"Statistics"中勾选汇总信息,并选择所需的统计信息。根据需求可以在“Save”和“Options”中选择保存数据和进一步定制分析内容。
模型评估
与Python相同,在SPSS中也要查看回归系数、残差、决定系数、F值和p值等指标,并进行预测结果的分析,比如画图查看预测值和实际值的分布情况。
示例一:房价预测分析
假设我们要对房价进行多元线性回归分析。我们以Python为例子。
数据加载
加载我们的数据,假设我们的数据是从数据库中得到的。
import pandas as pd
import numpy as np
import statsmodels.api as sm
import psycopg2
conn = psycopg2.connect(database="database",
user="user",
password="password",
host="localhost",
port="5432")
sql = "SELECT * FROM house_price"
data = pd.read_sql_query(sql, conn)
数据清洗
丢弃不必要列,空值和异常值等。
# 丢弃不必要列
data = data.drop(['ID'], axis=1)
# 丢弃空值行
data = data.dropna()
# 查找异常值并清洗
data = data.drop(data.loc[data['Price'] > 10000000].index)
回归分析
分析自变量对因变量的影响,我们选择面积、户型和地理位置等指标作为自变量。
y = data['Price']
x = data[['Square', 'Rooms', 'District_ID']]
# 标准化处理
mean = x.mean()
std = x.std()
x = (x - mean) / std
# 划分训练集和测试集
np.random.seed(0)
index = np.random.permutation(len(data))
train_index = index[:int(len(index) * 0.7)]
test_index = index[int(len(index) * 0.7):]
train_data = data.iloc[train_index, :]
test_data = data.iloc[test_index, :]
# 分离因变量和自变量
y_train = train_data['Price']
x_train = train_data[['Square', 'Rooms', 'District_ID']]
y_test = test_data['Price']
x_test = test_data[['Square', 'Rooms', 'District_ID']]
# 建立模型
ols_result = sm.OLS(y_train, sm.add_constant(x_train)).fit()
print(ols_result.summary())
模型评估
查看模型指标并预测测试集结果。
print(f"模型R方:{r2_score(y_test, y_predict)}")
print(f"均方误差:{mean_squared_error(y_test, y_predict)}")
示例二:学生成绩预测分析
假设我们要对学生成绩进行多元线性回归分析。我们以SPSS为例子。
数据加载
在SPSS中新建数据集并输入学生基本信息、每门课的分数等数据。
回归分析
在数据集导入完成后,我们选择学生成绩作为因变量,自变量包括性别、年龄、家庭背景、学习时间、课程难度等等。在SPSS中,进入“Regression”菜单,选择“Linear Regression”,在“Dependent list”中选择因变量。在自变量一栏中选择需要进行回归分析的变量,点击"Add"加入自变量列表。
模型评估
在SPSS中,可以在“Statistics”菜单中选择需要的统计指标,如截距、标准误差、显著性分及F值等等。
在模型建立完成后,我们可以对模型进行评估,比如预测学生成绩,查看预测值和实际值的分布情况,可视化的方式更加直观。
结论
本文介绍了Python和SPSS两种工具在多元线性回归分析方面的使用方法,希望对读者有所帮助。在进行数据分析时,需要注意数据的清洗和处理,避免无效因素的影响。同时,在模型评估时也需要针对模型的具体情况选择适合的评估指标,确保分析结果可信。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于多元线性回归分析——Python&SPSS - Python技术站