ResearchTeaching&c.Mark Myslín

San Diego Transit divisions project

In the winter and spring of 2012, I took it upon myself to determine which of San Diego Transit's two main fleet divisions—Imperial Avenue (IAD) and Kearny Mesa (KMD)—operate each of the routes, and which buses are based at each division. To do this, I logged over 800 individual bus sightings with an iPhone webapp I developed, noting the route and vehicle number for each sighting. Making use of a few more pieces of information—for example, that KMD is closed on weekends, so all weekend sightings must be IAD buses—I was able to infer the division(s) responsible for operating each main fleet route.


The project only covers those routes with division and vehicle assignments that aren't already predictable. Thus routes that reliably use vehicles other than standard CNG 40-footers (the 7, 150, and 201/202, for example) and routes operated from El Cajon and South Bay (like the 3 and all 8xx/9xx routes) are excluded.

Equipment by division

The following breakdown of individual C40LF(R) units emerged. (See the CPTDB wiki for fleet details.)

Imperial Avenue

301-13, 601-26, 1601-31, 1843-71

Kearny Mesa

314-50, 401-07, 1801-41

Routes, by proportion of runs operated by each division. Pins mark the divisions themselves.

100% IAD

100% KMD

Weekday route operations by division

At left is my estimate of the proportion of individual runs of each route operated from IAD (as opposed to KMD). 1 corresponds to routes fully operated from IAD, and 0 corresponds to routes fully operated from KMD. Intermediate values mean the individual runs of the route are shared between the two divisions. Gray bars represent 95% confidence intervals.

Download the dataset

The full dataset is available for download as plain text. Day of the week follows PHP convention (00=Sun, ..., 06=Sat).


Bus-logging app

I designed a PHP-based iPhone webapp to log bus sightings. Each data point logged in the field was immediately sent to a PHP server, and later downloaded for processing with R.

I'm happy to distribute the code if anyone's interested—just let me know!