1. 引言
随着城市化的加速,公共交通服务在人们日常生活中扮演着越来越重要的角色。然而,乘客对公共交通的满意度往往受到多种因素的影响,其中等待时间和实际通行时间的预期与实际体验之间的差距是一个关键问题。本研究旨在通过深入的问卷调查和数学建模,分析影响个人公共交通出行行为选择的因素,为公共交通服务的优化提供有价值的参考和建议。
2. 问题分析
T1:数据整理与预处理
首先,需要整理原始数据集,并进行数据预处理。这包括数据的清理、缺失值的处理、异常值的检测与修正等步骤。选择合适的样本进行研究是至关重要的,因为良好的样本能够更好地代表整体群体。
T2:变量指标量化建模
2.1 价格性变量
价格性变量主要体现为总的出行费用。可以通过对票价、交通工具选择对总费用的影响等方面进行分析,建立数学模型。
2.2 时间性变量
时间性变量包括车辆频率、出行里程、等待时间、运输时间、换乘时间、首尾时间等。这些指标可以通过对实际数据的分析来计算,以便更好地理解时间对个人出行行为选择的影响。
2.3 稳定性(可靠性)变量
稳定性变量源自多种主客观因素,如拥挤、事故、发车延误等。通过研究车辆延误时间的统计特性,比如均值、统计区间、样本方差等,可以建立稳定性的数学模型。
2.4 舒适度变量
舒适度变量包括可获得性、拥挤舒适度、环境舒适度、座位舒适度等。通过调查问卷以及主观评价数据,可以对这些变量进行量化分析。
T3:探究各变量的单一和综合作用
将影响个人公共交通出行行为的因素分为价格性、时间性、可靠性和舒适度四种类型。通过深入分析各变量的单一作用以及它们的综合作用,可以揭示出对个人出行选择的主要影响因素。
T4:数据缺失值的预测
根据问题描述,部分数据表中的交通方式和交通出行方案被删除,需要进行预测。可以使用机器学习算法,如回归模型或者决策树模型,基于其他已有数据对缺失值进行合理的预测。
3. 详细思路与代码
3.1 数据整理与预处理
首先,加载数据并进行初步的数据探索,了解数据的结构和特征。检查缺失值、异常值,并进行适当的处理。
import pandas as pd
import numpy as np
# 加载数据
data = pd.read_csv("your_dataset.csv")
# 数据探索
print(data.info())
# 处理缺失值
data = data.dropna()
# 处理异常值
# ...
# 数据预览
print(data.head())
3.2 变量指标量化建模
3.2.1 价格性变量建模
# 建立价格性变量模型
from sklearn.linear_model import LinearRegression
X_price = data[['Ticket_Price', 'Transport_Mode']]
y_price = data['Total_Expenses']
model_price = LinearRegression()
model_price.fit(X_price, y_price)
# 打印模型系数
print("Coefficients:", model_price.coef_)
3.2.2 时间性变量建模
# 计算时间性变量
data['Total_Time'] = data['Wait_Time'] + data['Travel_Time'] + data['Transfer_Time']
# 建立时间性变量模型
from sklearn.ensemble import RandomForestRegressor
X_time = data[['Vehicle_Frequency', 'Travel_Distance', 'Wait_Time', 'Total_Time']]
y_time = data['Individual_Travel_Time']
model_time = RandomForestRegressor()
model_time.fit(X_time, y_time)
# 特征重要性
print("Feature Importances:", model_time.feature_importances_)
3.2.3 稳定性(可靠性)变量建模
# 计算稳定性变量
data['Delay_Stats'] = data[['Delay_Mean', 'Delay_Variance']].mean(axis=1)
# 建立稳定性变量模型
from sklearn.cluster import KMeans
X_stability = data[['Delay_Mean', 'Delay_Variance', 'Delay_Stats']]
kmeans = KMeans(n_clusters=2)
data['Stability_Cluster'] = kmeans.fit_predict(X_stability)
# 聚类结果
print(data['Stability_Cluster'].value_counts())
3.2.4 舒适度变量建模
# 建立舒适度变量模型
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data[['Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']] = scaler.fit_transform(data[['Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']])
3.3 探究各变量的单一和综合作用
3.3.1 单一作用分析
通过可视化和统计分析,分析每个变量对个人出行行为选择的单一作用。
import matplotlib.pyplot as plt
import seaborn as sns
# 价格性变量对出行选择的影响
sns.scatterplot(x='Ticket_Price', y='Total_Expenses', data=data)
plt.xlabel('Ticket Price')
plt.ylabel('Total Expenses')
plt.show()
# 时间性变量对出行选择的影响
sns.scatterplot(x='Total_Time', y='Individual_Travel_Time', data=data)
plt.xlabel('Total Time')
plt.ylabel('Individual Travel Time')
plt.show()
# 稳定性变量对出行选择的影响
sns.countplot(x='Stability_Cluster', data=data)
plt.xlabel('Stability Cluster')
plt.show()
# 舒适度变量对出行选择的影响
sns.boxplot(data=data[['Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']])
plt.xlabel('Comfort Variables')
plt.show()
3.3.2 综合作用分析
通过建立综合模型,如回归模型,来揭示各变量综合作用对个人出行行为选择的影响。
# 建立综合模型
X_combined = data[['Ticket_Price', 'Total_Time', 'Stability_Cluster', 'Comfort_Availability', 'Crowded_Comfort', 'Environment_Comfort', 'Seat_Comfort']]
y_combined = data['Travel_Choice']
from sklearn.linear_model import LogisticRegression
model_combined = LogisticRegression()
model_combined.fit(X_combined, y_combined)
# 打印模型系数
print("Coefficients:", model_combined.coef_)
3.4 数据缺失值的预测
使用机器学习算法进行缺失值的预测,以确保数据的完整性。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 分离有缺失值的数据和无缺失值的数据
data_missing = data[data['Traffic_Mode'].isnull()]
data_no_missing = data.dropna(subset=['Traffic_Mode'])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data_no_missing[['feature1', 'feature2', ...]], data_no_missing['Traffic_Mode'], test_size=0.2, random_state=42)
# 训练线性回归模型
model_missing = LinearRegression()
model_missing.fit(X_train, y_train)
# 预测缺失值
missing_predictions = model_missing.predict(data_missing[['feature1', 'feature2', ...]])
# 将预测值填充回原数据
data.loc[data['Traffic_Mode'].isnull(), 'Traffic_Mode'] = missing_predictions