久久亚洲国产精品视频,中国AV片,最近中文字幕免费大全,国产亚洲精品久久久999功能介绍,欧美色女人

金融情報(bào)局網(wǎng)

公交車總遲到?你大概掉進(jìn)了“等待時(shí)間悖論”

當(dāng)前位置:金融情報(bào)局網(wǎng)>資訊 > 科技 > 正文  2018-11-27 14:23:26 來(lái)源:大數(shù)據(jù)文摘

如果你經(jīng)常坐公交車,相信下面這一場(chǎng)景對(duì)你絕不陌生。

你到了車站,準(zhǔn)備搭乘聲稱每10分鐘一班的公交車。你盯著你的手表留意著時(shí)間,結(jié)果公交車終于在11分鐘后到來(lái)。

這時(shí)你不由得感嘆:為什么今天運(yùn)氣這么差!

想想也是。如果公交車每10分鐘一班,而你到達(dá)的時(shí)間是隨機(jī)的,那么你的平均等待時(shí)間難道不是5分鐘嘛?

但實(shí)際上,等待公交車的時(shí)間似乎永遠(yuǎn)要比你預(yù)估的久。

究竟是你錯(cuò)了?還是公交運(yùn)營(yíng)系統(tǒng)出了問(wèn)題?

事實(shí)證明,在一些合理的假設(shè)下,你可以得出一個(gè)驚人的結(jié)論:

在等待平均10分鐘一班的公交車時(shí),你的平均等待時(shí)間將為10分鐘。

這就叫等待時(shí)間悖論。

等待時(shí)間悖論

如果公交車精確每10分鐘來(lái)一輛,那么你的平均等待時(shí)間就是這個(gè)間隔的一半:5分鐘。

可是,如果我們給這個(gè)10分鐘加上一點(diǎn)隨機(jī)成分呢?

這時(shí),等待時(shí)間悖論就出現(xiàn)了。

等待時(shí)間悖是檢驗(yàn)悖論的一種。那么,什么是檢驗(yàn)悖論呢?

簡(jiǎn)言之,只要觀察量的概率與觀察量有關(guān),就會(huì)出現(xiàn)檢驗(yàn)悖論。比如說(shuō),我們做了一個(gè)調(diào)查大學(xué)生班級(jí)平均人數(shù)的調(diào)查。雖然學(xué)校確實(shí)保證每班平均有30名學(xué)生,但實(shí)際調(diào)查下來(lái)的平均班級(jí)規(guī)模通常會(huì)大得多。

原因是,較大的班級(jí)中就有更多的學(xué)生,因此在計(jì)算學(xué)生的平均體驗(yàn)時(shí),你會(huì)對(duì)大班進(jìn)行過(guò)度地抽樣。極端得講,如果有一個(gè)班一個(gè)學(xué)生也沒(méi)有,那你壓根不會(huì)抽樣到這個(gè)班級(jí)的學(xué)生。

對(duì)于通常10分鐘一班的公交線路,有時(shí)兩班車的間隔會(huì)超過(guò)10分鐘,有時(shí)則短點(diǎn)。如果你在隨機(jī)時(shí)間到達(dá),那你會(huì)有更多機(jī)會(huì)遇到更長(zhǎng)的等待間隔,而不是較短的。

因此,乘客所經(jīng)歷的平均等待時(shí)間間隔將比公交車之間的平均到達(dá)時(shí)間間隔更長(zhǎng),因?yàn)檩^長(zhǎng)的間隔是被過(guò)度采樣了的。

但等待時(shí)間悖論提出了一個(gè)比這更震撼的主張。

當(dāng)兩班車的平均間隔是N分鐘時(shí),搭乘者所經(jīng)歷的平均等待時(shí)間也是N分鐘,而非N/2分鐘。

這是真的嗎?

模擬等待時(shí)間

為了證明等待時(shí)間悖論的合理性,讓我們首先模擬平均每10分鐘到達(dá)一班的公交車流。

我們將模擬大量的公交車到達(dá)的情況:100萬(wàn)輛(或大約19年中全天不間斷的10分鐘來(lái)一輛車的間隔),以保證實(shí)驗(yàn)的準(zhǔn)確性。

importnumpyasnpN=1000000#numberofbusestau=10#averageminutesbetweenarrivalsrand=np.random.RandomState(42)#universalrandomseedbus_arrival_times=N*tau*np.sort(rand.rand(N))為了確認(rèn)我們做的是對(duì)的,讓我們檢查一下平均間隔是否接近τ= 10:

intervals=np.diff(bus_arrival_times)intervals.mean()輸出:

9.9999879601518398通過(guò)模擬這些公交車到達(dá),我們現(xiàn)在可以模擬大量乘客在此期間到達(dá)公交車站,并計(jì)算他們每個(gè)人經(jīng)歷的等待時(shí)間。讓我們將它封裝在一個(gè)函數(shù)中供以后使用:

defsimulate_wait_times(arrival_times,rseed=8675309,#Jenny'srandomseedn_passengers=1000000):rand=np.random.RandomState(rseed)arrival_times=np.asarray(arrival_times)passenger_times=arrival_times.max()*rand.rand(n_passengers)#findtheindexofthenextbusforeachsimulatedpassengeri=np.searchsorted(arrival_times,passenger_times,side='right')returnarrival_times[i]-passenger_times然后我們可以模擬一些等待時(shí)間并計(jì)算平均值:

wait_times=simulate_wait_times(bus_arrival_times)wait_times.mean()輸出:

10.001584206227317平均等待時(shí)間接近10分鐘。正如等待時(shí)間悖論預(yù)測(cè)的那樣。

深入挖掘:概率和泊松過(guò)程

我們?nèi)绾卫斫膺@一現(xiàn)象呢?

從本質(zhì)上說(shuō),這是檢驗(yàn)悖論的一個(gè)例子,其中觀察值的概率與觀察值本身有關(guān)。 讓我們用p(T)表示公交車到達(dá)車站時(shí)間隔T的分布。 在這種表示法中,到達(dá)時(shí)間的期望值是:

在上面的模擬中,我們選擇了E [T] =τ= 10分鐘。

當(dāng)乘客隨機(jī)到達(dá)公交車站時(shí),他們所經(jīng)歷的時(shí)間間隔的概率將受到p(T)的影響,但也受到T本身的影響:間隔時(shí)間越長(zhǎng),乘客遇到這一間隔的概率就越大。

所以我們可以得出乘客所經(jīng)歷的到達(dá)時(shí)間分布:

比例常數(shù)來(lái)自正態(tài)化分布:

與上面相比,我們可以將它簡(jiǎn)化為

預(yù)計(jì)等待時(shí)間E [W]將是乘客所經(jīng)歷的預(yù)期間隔的一半,所以我們可以寫作

或者可以寫得更清楚一點(diǎn):

現(xiàn)在,讓我們?yōu)閜(T)選擇一個(gè)表格并計(jì)算積分。

(1) 選擇p(T)

如果我們這種公式推導(dǎo)可行,那用于p(T)的合理分布是什么?

我們可以通過(guò)繪制兩班車間隔的直方圖來(lái)獲得模擬到達(dá)中的p(T)分布的圖片:

%matplotlibinlineimportmatplotlib.pyplotaspltplt.style.use('seaborn')plt.hist(intervals,bins=np.arange(80),density=True)plt.axvline(intervals.mean(),color='black',linestyle='dotted')plt.xlabel('Intervalbetweenarrivals(minutes)')plt.ylabel('Probabilitydensity');

這里的垂直虛線表示平均的間隔大約為10分鐘。這看起來(lái)非常像指數(shù)分布,而且并非偶然:我們將公交車的到達(dá)時(shí)間模擬為均勻隨機(jī)數(shù),這非常接近于泊松過(guò)程,對(duì)于這樣的過(guò)程,可以證明到達(dá)之間的間隔分布是呈指數(shù)分布的。

注:實(shí)際上,在區(qū)間Nτ內(nèi)均勻采樣N個(gè)點(diǎn),點(diǎn)之間的間隔T遵循β分布:T /(Nτ)?Bet [1,N],當(dāng)N很大的時(shí)候這個(gè)極限趨于T~Exp [1 /τ]。

區(qū)間的指數(shù)分布意味著到達(dá)時(shí)間遵循泊松過(guò)程。

通過(guò)再次檢查這個(gè)推斷,我們可以確認(rèn)它與泊松過(guò)程的另一個(gè)屬性的相匹配:在固定時(shí)間范圍內(nèi)到達(dá)公交的數(shù)量將是泊松分布的。讓我們將模擬到達(dá)的時(shí)間按小時(shí)分桶檢查一下:

fromscipy.statsimportpoisson#countthenumberofarrivalsin1-hourbinsbinsize=60binned_arrivals=np.bincount((bus_arrival_times//binsize).astype(int))x=np.arange(20)#plottheresultsplt.hist(binned_arrivals,bins=x-0.5,density=True,alpha=0.5,label='simulation')plt.plot(x,poisson(binsize/tau).pmf(x),'ok',label='Poissonprediction')plt.xlabel('Numberofarrivalsperhour')plt.ylabel('frequency')plt.legend();

經(jīng)驗(yàn)值和理論值緊密匹配,這讓我們相信我們的解釋是正確:對(duì)于大N,柏松過(guò)程可以很好地描述我們模擬的公交到達(dá)時(shí)間,其到達(dá)間隔是指數(shù)分布的。

這意味著概率分布如下:

將此概率分布代入上面的公式,我們發(fā)現(xiàn)一個(gè)人的平均等待時(shí)間為

乘客的預(yù)期等待時(shí)間與公交到達(dá)的平均間隔相同!

一種補(bǔ)充的推斷方式是:泊松過(guò)程是一個(gè)無(wú)記憶過(guò)程,這意味著事件發(fā)生的歷史情況與下一個(gè)事件的預(yù)期時(shí)間無(wú)關(guān)。所以當(dāng)你到達(dá)公交站后,等到下一班公交的平均等待時(shí)間總是一樣的:在我們的案例中,它是10分鐘,這與上一班車走了多久無(wú)關(guān)!

同樣的原理,你已經(jīng)等待了多久并不重要:下一輛公交預(yù)計(jì)的到達(dá)時(shí)間總是10分鐘:對(duì)泊松過(guò)程來(lái)說(shuō),你花費(fèi)在等待的時(shí)間沒(méi)用。

實(shí)際的等待時(shí)間

如果通過(guò)泊松過(guò)程確實(shí)描述了真實(shí)世界的公交到達(dá)時(shí)間,上述分析是正確的,但事實(shí)真的如此嗎?

為了確定等待時(shí)間悖論是否描述了現(xiàn)實(shí)情況,我們深入研究了一些可供下載的數(shù)據(jù):arrival_times.csv(3MB的CSV文件)

https://gist.githubusercontent.com/jakevdp/82409002fcc5142a2add0168c274a869/raw/1bbabf78333306dbc45b9f33662500957b2b6dc3/arrival_times.csv

該數(shù)據(jù)集包含2016年第二季度記錄的西雅圖市中心3rd & Pike公交站的西雅圖Rapid Ride C、D、E線的預(yù)定和實(shí)際到達(dá)時(shí)間。

importpandasaspddf=pd.read_csv('arrival_times.csv')dfdf=df.dropna(axis=0,how='any')df.head()

我特意選擇Rapid Ride路線的數(shù)據(jù)是因?yàn)?,在一天的大部分時(shí)間里,公交車的間隔很規(guī)律,通常在10到15分鐘之間。

(1) 數(shù)據(jù)清洗

首先,讓我們進(jìn)行一下數(shù)據(jù)清洗,將其轉(zhuǎn)換為更易于使用的表單:

#combinedateandtimeintoasingletimestampdf['scheduled']=pd.to_datetime(df['OPD_DATE']+''+df['SCH_STOP_TM'])df['actual']=pd.to_datetime(df['OPD_DATE']+''+df['ACT_STOP_TM'])#ifscheduled&actualspanmidnight,thentheactualdayneedstobeadjustedminute=np.timedelta64(1,'m')hour=60*minutediff_hrs=(df['actual']-df['scheduled'])/hourdf.loc[diff_hrs>20,'actual']-=24*hourdf.loc[diff_hrs<-20,'actual']+=24*hourdf['minutes_late']=(df['actual']-df['scheduled'])/minute#mapinternalroutecodestoexternalroutelettersdf['route']=df['RTE'].replace({673:'C',674:'D',675:'E'}).astype('category')df['direction']=df['DIR'].replace({'N':'northbound','S':'southbound'}).astype('category')#extractusefulcolumnsdfdf=df[['route','direction','scheduled','actual','minutes_late']].copy()df.head()

(2) 公交車晚了多少?

該表中主要有六個(gè)不同的數(shù)據(jù)集:C、D和E線的北行和南行。為了了解它們的特性,讓我們繪制這六條線路的實(shí)際與預(yù)定到達(dá)時(shí)間差的直方圖:

importseabornassnsg=sns.FacetGrid(df,row="direction",col="route")g.map(plt.hist,"minutes_late",bins=np.arange(-10,20))g.set_titles('{col_name}{row_name}')g.set_axis_labels('minuteslate','numberofbuses');

你可能會(huì)認(rèn)為公交車每次在行程開始時(shí)與其時(shí)間表更接近,并且在快結(jié)束時(shí)有更多的差異,這在數(shù)據(jù)中得到了證實(shí):南行(southbound)C線和北行(northbound) D線、E線都在各自路線的起點(diǎn)接近時(shí)間表,而其反方向在終點(diǎn)時(shí)更接近。

(3) 預(yù)定和觀察到的到達(dá)時(shí)間間隔

接下來(lái)讓我們來(lái)看看這六條路線觀察和預(yù)計(jì)的到達(dá)時(shí)間間隔。我們首先使用Pandas 的groupby功能分別計(jì)算這些間隔:

defcompute_headway(scheduled):minute=np.timedelta64(1,'m')returnscheduled.sort_values().diff()/minutegrouped=df.groupby(['route','direction'])df['actual_interval']=grouped['actual'].transform(compute_headway)df['scheduled_interval']=grouped['scheduled'].transform(compute_headway)g=sns.FacetGrid(df.dropna(),row="direction",col="route")g.map(plt.hist,"actual_interval",bins=np.arange(50)+0.5)g.set_titles('{col_name}{row_name}')g.set_axis_labels('actualinterval(minutes)','numberofbuses');

可以很清楚看出,這并不像我們模型的指數(shù)分布形式,此外,分布可能受到非恒定的預(yù)定到達(dá)間隔的影響。

讓我們重復(fù)上面的圖表,查看預(yù)定到達(dá)間隔的分布:

這表明公交車在整個(gè)星期都有不同的到達(dá)時(shí)間間隔,所以我們無(wú)法從原始到達(dá)時(shí)間數(shù)據(jù)的分布來(lái)評(píng)估等待時(shí)間悖論的準(zhǔn)確性。

g=sns.FacetGrid(df.dropna(),row="direction",col="route")g.map(plt.hist,"scheduled_interval",bins=np.arange(20)-0.5)g.set_titles('{col_name}{row_name}')g.set_axis_labels('scheduledinterval(minutes)','frequency');構(gòu)建均勻分布的時(shí)間表

即使預(yù)定的到達(dá)間隔不均勻,也有一些特定的間隔有大量到達(dá)的數(shù)據(jù):例如,有近2000個(gè)北行E線的預(yù)定間隔為10分鐘。為了探索等待時(shí)間悖論是否適用,讓我們按路線、方向和預(yù)定間隔對(duì)數(shù)據(jù)進(jìn)行分組,然后將這些近似的到達(dá)時(shí)間重新堆疊在一起,就像它們按順序發(fā)生的一樣。這應(yīng)該保持了原始數(shù)據(jù)所有的相關(guān)特征,同時(shí)更容易直接與等待時(shí)間悖論的預(yù)測(cè)比較。

defstack_sequence(data):#first,sortbyscheduledtimedatadata=data.sort_values('scheduled')#re-stackdata&recomputerelevantquantitiesdata['scheduled']=data['scheduled_interval'].cumsum()data['actual']=data['scheduled']+data['minutes_late']data['actual_interval']=data['actual'].sort_values().diff()returndatasubset=df[df.scheduled_interval.isin([10,12,15])]grouped=subset.groupby(['route','direction','scheduled_interval'])sequenced=grouped.apply(stack_sequence).reset_index(drop=True)sequenced.head()

使用這些清理過(guò)的數(shù)據(jù),我們可以繪制不同路線、方向和到達(dá)頻率的“實(shí)際”到達(dá)間隔的分布:

forroutein['C','D','E']:g=sns.FacetGrid(sequenced.query(f"route=='{route}'"),row="direction",col="scheduled_interval")g.map(plt.hist,"actual_interval",bins=np.arange(40)+0.5)g.set_titles('{row_name}({col_name:.0f}min)')g.set_axis_labels('actualinterval(min)','count')g.fig.set_size_inches(8,4)g.fig.suptitle(f'{route}line',y=1.05,fontsize=14)

我們看到,每條路線和時(shí)間表的觀測(cè)到達(dá)間隔的分布接近高斯分布,在預(yù)定的到達(dá)間隔附近達(dá)到峰值,并且在路線開始附近具有較小的標(biāo)準(zhǔn)差(C的南行(southbound),D / E的北行(northbound)),以及在路線結(jié)束附近有更大的標(biāo)準(zhǔn)差。

即使不經(jīng)過(guò)統(tǒng)計(jì)測(cè)試,我們也可以清楚地看到,實(shí)際的到達(dá)時(shí)間間隔肯定不是指數(shù)分布的,因而等待時(shí)間悖論所依賴的基本假設(shè)并不成立。

我們可以利用上面使用的等待時(shí)間模擬功能來(lái)找到每條公交路線、方向和時(shí)間表的平均等待時(shí)間:

grouped=sequenced.groupby(['route','direction','scheduled_interval'])sims=grouped['actual'].apply(simulate_wait_times)sims.apply(lambdatimes:"{0:.1f}+/-{1:.1f}".format(times.mean(),times.std()))輸出:

平均等待時(shí)間可能比預(yù)定時(shí)間間隔的一半長(zhǎng)上一兩分鐘,但不等于等待時(shí)間悖論所暗示的預(yù)定時(shí)間間隔。換句話說(shuō),檢驗(yàn)悖論得到了證實(shí),但等待時(shí)間悖論似乎與現(xiàn)實(shí)不符。

結(jié)論

等待時(shí)間悖論是個(gè)非常有趣的現(xiàn)象。它涵蓋了模擬、概率以及統(tǒng)計(jì)假設(shè)與現(xiàn)實(shí)的比較。

雖然我們確認(rèn)了,現(xiàn)實(shí)世界的公交線路確實(shí)遵循了一些版本的檢驗(yàn)悖論,但上面的分析非常明確地顯示,等待時(shí)間悖論背后的核心假設(shè)(公交車的到達(dá)時(shí)間遵循泊松過(guò)程)并不是很有根據(jù)。

回想起來(lái),這也并不令人驚訝:泊松過(guò)程是一個(gè)無(wú)記憶過(guò)程,它假設(shè)到達(dá)的概率完全獨(dú)立于自上次到達(dá)的時(shí)間。實(shí)際上,一個(gè)運(yùn)行良好的公交系統(tǒng)將有一個(gè)有意安排的時(shí)間表,用以避免這種行為:公交車不會(huì)在一天中的隨機(jī)時(shí)間開始他們的路線,而是按照選擇能夠最佳服務(wù)公眾的時(shí)間表開始他們的路線。

這里更大的教訓(xùn)是,你應(yīng)該謹(jǐn)慎對(duì)待任何數(shù)據(jù)分析工作的假設(shè)。泊松過(guò)程可以良好地描述到達(dá)時(shí)間的數(shù)據(jù) – 但只是在某些特定情況下。

僅僅因?yàn)橐环N類型的數(shù)據(jù)看起來(lái)像另一種類型的數(shù)據(jù),并不能推導(dǎo)出對(duì)一種數(shù)據(jù)有效的假設(shè)必然對(duì)另一種有效。

通常那些看似正確的假設(shè)可能會(huì)導(dǎo)致與現(xiàn)實(shí)不符的結(jié)論。

關(guān)鍵詞: 公交車 等待時(shí)間

相關(guān)內(nèi)容