《城市公交IC卡·数据分析方法及应用》 陈学武、李海波、候贤耀著
《城市公交IC卡·数据分析方法及应用》——上车点识别·笔记
一般情况下,IC卡是没有记录上车点的信息,需要结合其他数据对IC卡处理
通常情况下,使用时间特征对数据匹配
公交运营时间和乘客刷卡时间特征
公交车辆运营一趟的的总时间:
T
=
t
a
n
−
t
a
l
=
∑
i
=
1
k
−
1
(
T
s
k
−
T
r
k
)
T = t_{an}-t_{al} = \sum_{i=1}^{k-1}(T_{sk}-T_{rk})
T=tan−tal=i=1∑k−1(Tsk−Trk)
总时间 = 运行时间+停靠时间
公交车辆到达第k个站点的时间:
t
a
k
=
t
a
1
+
∑
i
=
1
k
−
1
(
T
s
i
−
T
r
i
)
t_{ak} = t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri})
tak=ta1+i=1∑k−1(Tsi−Tri)
到达第k个站点的时间 = 起始时间 +此站前的总时间
车辆离开第K个站点的时间:
t
s
k
=
t
a
1
+
∑
i
=
1
k
−
1
(
T
s
i
−
T
r
i
)
+
T
s
k
t_{sk} = t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri})+T_{sk}
tsk=ta1+i=1∑k−1(Tsi−Tri)+Tsk
离开第K个站点的时间 = 到达时间+停靠时间
综上,车辆在第K歌站点停留时间区间为:
[
t
a
k
,
t
l
k
]
=
[
t
a
1
+
∑
i
=
1
k
−
1
(
T
s
i
−
T
r
i
)
,
t
a
1
+
∑
i
=
1
k
−
1
(
T
s
i
−
T
r
i
)
+
T
s
k
]
[t_{ak},t_{lk}] = [t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri}) , t_{a1}+\sum_{i= 1}^{k-1}(T_{si} - T_{ri})+T_{sk}]
[tak,tlk]=[ta1+i=1∑k−1(Tsi−Tri),ta1+i=1∑k−1(Tsi−Tri)+Tsk]
其中:
k ——站点号
t a 1 t_{a1} ta1 —— 起点发车时间
t l 1 t_{l1} tl1 —— 起点离开时间
t a k t_{ak} tak —— 到达第k个站点的时间
t l k t_{lk} tlk —— 离开第k个站点的时间
T s 1 T_{s1} Ts1—— 起点站发车时间与离开时间间隔
T r 1 T_{r1} Tr1 —— 起点发车时间(第一站)到下一站的运行时间
T s k T_{sk} Tsk —— 车辆在第k个站点的停留时间
T r k T_{rk} Trk —— 车辆离开第k个站到达下一个站的运行时间
仅仅依赖公交调度表结合线路平均运营速度对算到站时间的可靠性不高,还需要结合上乘客的刷卡数据
乘客刷卡时间特征
在乘客较多或者存在行动不方便的乘客时,会出现公交启动离站后才刷卡的情况,也就意味着刷卡存在一个刷卡时间区间。
乘客的刷卡行为呈现一种明显的集中性和有序性,可以使用聚类方法将同意站点乘坐同一车次的刷卡记录聚合成一组,以达到聚类数据的刷卡时间与公交车辆到达时间的良好匹配关系
考虑到公交线路的周期性以及一个车次中不会每站都有人上车,所以可以将一周的时间集中在一起聚类分析
上车点识别
聚类分析
聚类分析方法主要依据数据客体之间的相似性和相异性,将这种关系看成一种距离上的远近的一种度量。将距离近的归类为同一种类,距离远的归结为另一类
主要方法分为 层次聚类和 非层次聚类,如:k-means、BIRCH、DBSCAN等方法
由于不是每一个站点都会有人上车,所以聚类只能聚合出有刷卡数据的站点数据
对于这类问题有以下解决办法:
- 在公交IC卡数据聚类的基础上,利用公交调度数据推算公交车辆到站时间,利用公交IC卡时间与公交车辆到站时间匹配识别上车点。
- 依据换乘行为,将识别出来的换成站点作为控制站点来推断其他上车站点
基于公交调度数据的算法
公交IC卡数据聚类
对于一辆公交车,乘客上车客流具有很强的时间群集特性,即刷卡时间也具有时间群集特征。可以通过对刷卡数据的聚类分析,以时间长短作为相似性依据
对刷卡时间进行聚类的分类数量不确定,只有采用层次聚类方法:
- 提取所有记录,将每个记录看成一类,初始数量设为K
- 计算相邻类的刷卡时间最短间隔设为距离 D p q D_{pq} Dpq,将距离最小的几类合并
- 重复步骤2,知道min( D i j D_{ij} Dij)> T u T_u Tu,即相邻两类的最小距离中的最小值大于该线路相邻两站点之间最短的刷卡间隔 (两个最小值比较)
聚类之后,将各组分类号建字段存储到刷卡数据表中
计算 各组刷卡数据的 中间值 与 最大刷卡间隔 并存储 以备和车辆停靠时间匹配,确定上车点
中间值:组内各组刷卡时间的算数平均数(个人看法:取中位数研究)
最大时间间隔:组中最后一次和第一次之间的时间间隔
车辆停靠时刻推算
这里定义公交停靠时刻 为车辆停靠在停靠站 停靠的中间时刻 即:
t
k
=
t
a
k
+
(
t
l
k
+
t
a
k
)
2
=
t
l
(
k
−
1
)
+
T
r
(
k
−
1
)
+
T
s
k
2
,
k
>
=
2.
t_k = t_{ak} + \frac{(t_{lk}+t_{ak})}{2} \\= t_{l(k-1)} + T_{r(k-1)}+\frac{T_{sk}}{2},k>=2.
tk=tak+2(tlk+tak)=tl(k−1)+Tr(k−1)+2Tsk,k>=2.
可以从公交调度信息表中提取出车辆起点发车时刻t_l1 与 终点站到站时刻t_an
推算公交车辆离开各站点的时刻:
t l k = t l ( k − 1 ) + T r ( k − 1 ) + T s k 离 开 时 刻 = 上 一 站 离 开 时 刻 + 上 一 段 路 上 运 行 时 间 + 此 站 的 停 靠 时 间 = [ t l ( k − 2 ) + T r ( k − 2 ) + T s ( k − 1 ) ] + T r ( k − 1 ) + T s k 通 过 递 归 , 递 推 到 t l 1 = t l 1 + ∑ i = 1 k − 1 T r i + ∑ i = 2 k T s i 整 理 后 得 到 上 面 的 公 式 t_{lk} = t_{l(k-1)}+T_{r(k-1)}+T_{sk}\\ 离开时刻 = 上一站离开时刻+上一段路上运行时间+此站的停靠时间\\ \qquad\\\qquad\\ =[t_{l(k-2)}+T_{r(k-2)}+T_{s(k-1)}]+T_{r(k-1)}+T_{sk}\\ 通过递归,递推到t_{l1}\\ \qquad\\\qquad\\ = t_{l1}+\sum_{i = 1}^{k-1}T_{ri}+\sum_{i=2}^{k}T_{si}\\ 整理后得到上面的公式 tlk=tl(k−1)+Tr(k−1)+Tsk离开时刻=上一站离开时刻+上一段路上运行时间+此站的停靠时间=[tl(k−2)+Tr(k−2)+Ts(k−1)]+Tr(k−1)+Tsk通过递归,递推到tl1=tl1+i=1∑k−1Tri+i=2∑kTsi整理后得到上面的公式
对于首末站,近似的认为到站时间和出站时间相等
停靠时间 T s k T_{sk} Tsk:注意到的刷卡数据聚类后计算得到的各组的刷卡时间间隔(Δk表示)数据可以近似表示为 站点停靠时间,其他没有刷卡数据的站点其停靠时间可以根据 调查近似值
站点间运行时间
T
s
k
T_{sk}
Tsk: 即 站间距离/平均运行速度的值,单位s,计算公式:
T
r
k
=
l
k
(
k
+
1
)
V
‾
V
‾
=
l
t
a
n
−
t
l
n
−
∑
i
=
2
n
−
1
T
s
i
即
:
T
r
k
=
l
k
(
k
+
1
)
∗
(
t
a
n
−
t
l
n
−
∑
i
=
2
n
−
1
T
s
i
)
l
T_{rk} = \frac{l_{k(k+1)}}{\overline{V}}\\ \qquad\\\qquad\\ \overline{V} = \frac{l}{t_{an}-t_{ln}-\sum_{i = 2}^{n-1}T_{si}}\\ \qquad\\\qquad\\ 即:T_{rk} = \frac{l_{k(k+1)}*(t_{an}-t_{ln}-\sum_{i = 2}^{n-1}T_{si})}{l}\\
Trk=Vlk(k+1)V=tan−tln−∑i=2n−1Tsil即:Trk=llk(k+1)∗(tan−tln−∑i=2n−1Tsi)
刷卡时间与停靠时间匹配
通过聚类分析和停靠时刻推算得到个各类中公交刷卡时间的“中间值 t m t_m tm” 和 公交车辆在各站点的“停靠时刻 t k t_k tk”
通过t_m和t_k之间的距离 Δmk ,当Δmk = min( | t m − t k t_m - t_k tm−tk | ) 时,所取 t k t_k tk 对应的停靠站点认为时 t m t_m tm 所对应的刷卡记录的刷卡站点,即上车站点