рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕, рдпрд╛ рдореЗрд░реА рдмрд╕ рд╣рдореЗрд╢рд╛ рджреЗрд░ рд╕реЗ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ?


рд╕реНрд░реЛрдд : рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ CC-BY-SA 3.0

рдпрджрд┐ рдЖрдк рдЕрдХреНрд╕рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рд╡рд╣рди рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖ рдЧрдП рд╣реИрдВ:

рддреБрдо рдПрдХ рдкрдбрд╝рд╛рд╡ рдкрд░ рдЖ рдЬрд╛рдУред рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдмрд╕ рд╣рд░ 10 рдорд┐рдирдЯ рдореЗрдВ рдЪрд▓рддреА рд╣реИред рд╕рдордп рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ... рдЖрдЦрд┐рд░рдХрд╛рд░, 11 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж, рдмрд╕ рдЖрддреА рд╣реИ рдФрд░ рд╕реЛрдЪрд╛: рдореИрдВ рд╣рдореЗрд╢рд╛ рдЕрд╢реБрдн рдХреНрдпреЛрдВ рд╣реВрдВ?

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдмрд╕реЗрдВ рдкреНрд░рддреНрдпреЗрдХ 10 рдорд┐рдирдЯ рдореЗрдВ рдЖрддреА рд╣реИрдВ, рдФрд░ рдЖрдк рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдордп рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд╕реЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рдкрд░ рдирд╣реАрдВ рдЖрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐, рдХреБрдЫ рдЙрдЪрд┐рдд рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖ рд╕рдХрддреЗ рд╣реИрдВ:

рд╣рд░ 10 рдорд┐рдирдЯ рдореЗрдВ рдФрд╕рддрди рдЖрдиреЗ рд╡рд╛рд▓реА рдмрд╕ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХрд╛ рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп 10 рдорд┐рдирдЯ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдореБрдЭреЗ рдкрд╣рд▓реЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдерд╛, рдФрд░ рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЪ рд╣реИ ... рдЗрд╕ рддрд░рд╣ рдХреА "рдЙрдЪрд┐рдд рдзрд╛рд░рдгрд╛рдПрдВ" рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ? рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рджреЛрдиреЛрдВ рдореЙрдбрд▓рд┐рдВрдЧ рдФрд░ рд╕рдВрднрд╛рд╡реНрдп рддрд░реНрдХреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рд▓рдВрдмрддрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕рд┐рдПрдЯрд▓ рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд╕ рдбреЗрдЯрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ (рдЙрдореНрдореАрдж рд╣реИ) рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреЛ рд╣рд▓ рдХрд░реЗрдВред

рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдирд┐рд░реАрдХреНрд╖рдг


рдЕрдЧрд░ рдмрд╕реЗрдВ рд╣рд░ рджрд╕ рдорд┐рдирдЯ рдореЗрдВ рдЖрддреА рд╣реИрдВ, рддреЛ рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп 5 рдорд┐рдирдЯ рд╣реЛрдЧрд╛ред рдПрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдмрд╕реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХреНрдпреЛрдВ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдирд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ - рдирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ , рдЬрд┐рд╕ рдкрд░ рдПрд▓рди рдбрд╛рдЙрдиреА рдХреЗ рд╕рдордЭрджрд╛рд░ рд▓реЗрдЦ, "рдирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╣рд░ рдЬрдЧрд╣ рд╣рдорд╛рд░реЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред "

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдорд╛рддреНрд░рд╛ рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рджреЗрдЦреА рдЧрдИ рдорд╛рддреНрд░рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреА рд╣реИред рдПрд▓рди рдЕрдкрдиреА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдФрд╕рдд рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╕реНрдХреВрд▓ рд╕рдЪ рдореЗрдВ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ 30 рдЫрд╛рддреНрд░реЛрдВ рдХреА рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ рдХреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдФрд╕рдд рд╕рдореВрд╣ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдмрдбрд╝реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ (рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ) рдЕрдзрд┐рдХ рдЫрд╛рддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдирдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИред

рдШреЛрд╖рд┐рдд 10-рдорд┐рдирдЯ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдмрд╕ рдЕрдиреБрд╕реВрдЪреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрднреА-рдХрднреА рдЖрдЧрдорди рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░рд╛рд▓ 10 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдХрдо рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдордп рдкрд░ рд░реБрдХ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдПрдХ рд▓рдВрдмреЗ рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмреАрдЪ рдФрд╕рдд рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдмрд╕реЛрдВ рдХреЗ рдмреАрдЪ рдФрд╕рдд рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирдореВрдиреЗ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдВрддрд░рд╛рд▓ рдЕрдзрд┐рдХ рдЖрдо рд╣реИред

рд▓реЗрдХрд┐рди рд╡рд┐рд▓рдВрдмрддрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдПрдХ рдордЬрдмреВрдд рдмрдпрд╛рди рджреЗрддрд╛ рд╣реИ: рдпрджрд┐ рдФрд╕рдд рдмрд╕ рд░рд┐рдХреНрддрд┐ рд╣реИ рдПрдирдПрди рдорд┐рдирдЯ, рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╣реИ 2N рдорд┐рдирдЯред рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рд╡рд┐рд▓рдВрдмрддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг


рдЦреБрдж рдХреЛ рдЗрд╕ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ 10 рдорд┐рдирдЯ рдХреЗ рдФрд╕рдд рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рдмрд╕реЛрдВ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдбрд╝рд╛ рдирдореВрдирд╛ рд▓реЗрдВ: рдПрдХ рдорд┐рд▓рд┐рдпрди рдмрд╕реЗрдВ (рдпрд╛ 10 рдорд┐рдирдЯ рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рд▓рдЧрднрдЧ 19 рд╕рд╛рд▓):

import numpy as np N = 1000000 # number of buses tau = 10 # average minutes between arrivals rand = np.random.RandomState(42) # universal random seed bus_arrival_times = N * tau * np.sort(rand.rand(N)) 

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдФрд╕рдд рдЕрдВрддрд░рд╛рд▓ рдХрд░реАрдм рд╣реИ  tau=10 :

 intervals = np.diff(bus_arrival_times) intervals.mean() 

9.9999879601518398

рдЕрдм рд╣рдо рд╕рдордп рдХреА рдЗрд╕ рдЕрд╡рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╕ рд╕реНрдЯреЙрдк рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рдЖрдЧрдорди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдб рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ:

 def simulate_wait_times(arrival_times, rseed=8675309, # Jenny's random seed n_passengers=1000000): rand = np.random.RandomState(rseed) arrival_times = np.asarray(arrival_times) passenger_times = arrival_times.max() * rand.rand(n_passengers) # find the index of the next bus for each simulated passenger i = np.searchsorted(arrival_times, passenger_times, side='right') return arrival_times[i] - passenger_times 

рдлрд┐рд░ рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдФрд╕рдд рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

 wait_times = simulate_wait_times(bus_arrival_times) wait_times.mean() 

10.001584206227317

рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп 10 рдорд┐рдирдЯ рдХреЗ рдХрд░реАрдм рд╣реИред

рдЧрд╣рд░реА рдЦреБрджрд╛рдИ: рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдФрд░ рдкреЙрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ


рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдореВрд▓реНрдп рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕реНрд╡рдпрдВ рдореВрд▓реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реВрдкрд┐рдд рдХрд░реЗрдВ p(T) рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╡рд┐рддрд░рдг T рдмрд╕ рд╕реНрдЯреЙрдк рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реА рдмрд╕реЛрдВ рдХреЗ рдмреАрдЪред рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ, рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рд╣реЛрдЧрд╛:

E[T]= int 0inftyT p(T) dT


рдкрд┐рдЫрд▓реЗ рд╕рд┐рдореБрд▓реЗрд╢рди рдореЗрдВ, рд╣рдордиреЗ рдЪрдпрди рдХрд┐рдпрд╛ E[T]= tau=10 рдорд┐рдирдЯред

рдЬрдм рдХреЛрдИ рдпрд╛рддреНрд░реА рдХрд┐рд╕реА рднреА рд╕рдордп рдмрд╕ рд╕реНрдЯреЙрдк рдкрд░ рдЖрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рди рдХреЗрд╡рд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧреА p(T) рд▓реЗрдХрд┐рди рд╕реЗ рднреА T : рдЕрдВрддрд░рд╛рд▓ рдЬрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛, рдЙрд╕рдореЗрдВ рдпрд╛рддреНрд░реА рдЙрддрдиреЗ рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреЗред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

pexp(T) proptoT p(T)


рдЖрдиреБрдкрд╛рддрд┐рдХрддрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

pexp(T)= fracT p(T) int 0inftyT p(T) dT


рдпрд╣ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ

pexp(T)= fracT p(T)E[T]


рдлрд┐рд░ рдЗрдВрддрдЬрд╛рд░ рдХрд╛ рд╕рдордп рдИ[рдбрдмреНрд▓реНрдпреВ] рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдВрддрд░рд╛рд▓ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

E[W]= frac12Eexp[T]= frac12 int 0inftyT pexp(T) dT


рдЬрд┐рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

E[W]= fracE[T2]2E[T]


рдФрд░ рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╛рд░реНрдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ p(T) рдФрд░ рдЕрднрд┐рдиреНрди рдХреА рдЧрдгрдирд╛ред

рдкреА (рдЯреА) рдХреА рдкрд╕рдВрдж


рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рд╡рд┐рддрд░рдг рдХреНрдпрд╛ рд╣реИ p(T) ? рд╣рдо рд╡рд┐рддрд░рдг рдХреА рддрд╕реНрд╡реАрд░ рдЦреАрдВрдЪреЗрдВрдЧреЗ p(T) рдЖрдЧрдорди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреА рд╕рд╛рдЬрд┐рд╢ рд░рдЪрдХрд░ рд╣рдорд╛рд░реА рдирдХрд▓реА рдЖрд╡рдХ рдХреЗ рднреАрддрд░:

 %matplotlib inline import matplotlib.pyplot as plt plt.style.use('seaborn') plt.hist(intervals, bins=np.arange(80), density=True) plt.axvline(intervals.mean(), color='black', linestyle='dotted') plt.xlabel('Interval between arrivals (minutes)') plt.ylabel('Probability density'); 



рдпрд╣рд╛рдВ, рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдзрд░рд╛рд╢рд╛рдпреА рд▓рд╛рдЗрди рд▓рдЧрднрдЧ 10 рдорд┐рдирдЯ рдХрд╛ рдФрд╕рдд рдЕрдВрддрд░рд╛рд▓ рджрд┐рдЦрд╛рддреА рд╣реИред рдпрд╣ рдПрдХ рдШрд╛рддреАрдп рд╡рд┐рддрд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рджреБрд░реНрдШрдЯрдирд╛ рд╕реЗ рдирд╣реАрдВ: рд╡рд░реНрджреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╕ рдЖрдЧрдорди рд╕рдордп рдХрд╛ рд╣рдорд╛рд░рд╛ рдЕрдиреБрдХрд░рдг рдкреЙрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рд╡рд┐рддрд░рдг рдШрд╛рддреАрдп рд╣реИред

(рдиреЛрдЯ: рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рдШрд╛рддрд╛рдВрдХ рд╣реИ; рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдВрддрд░рд╛рд▓ T рдХреЗ рдмреАрдЪ рдПрди рдПрдХ рд╕рдордп рдЕрд╡рдзрд┐ рдХреЗ рднреАрддрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдЕрдВрдХ рдПрди рддрд╛рдК рдореИрдЪ рдХрд╛ рд╡рд┐рддрд░рдг T/(N tau) sim mathrmBeta[1,N] рдЬреЛ рдмрдбрд╝реА рд╕реАрдорд╛ рдореЗрдВ рд╣реИ рдПрди рдЖ T sim mathrmExp[1/ tau] ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, StackExchange рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рдпрд╛ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдпрд╣ рдзрд╛рдЧрд╛ )ред

рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдШрд╛рддреАрдп рд╡рд┐рддрд░рдг рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдЖрдЧрдорди рдХрд╛ рд╕рдордп рдкреЛрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреЙрд╕реЛрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдПрдХ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ: рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдореЗрдВ рдЖрдЧрдорди рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдкреЙрдЗрдЬрд╝рди рд╡рд┐рддрд░рдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдЖрдЧрдорди рдХреЛ рд╕рдордп рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 from scipy.stats import poisson # count the number of arrivals in 1-hour bins binsize = 60 binned_arrivals = np.bincount((bus_arrival_times // binsize).astype(int)) x = np.arange(20) # plot the results plt.hist(binned_arrivals, bins=x - 0.5, density=True, alpha=0.5, label='simulation') plt.plot(x, poisson(binsize / tau).pmf(x), 'ok', label='Poisson prediction') plt.xlabel('Number of arrivals per hour') plt.ylabel('frequency') plt.legend(); 



рдЕрдиреБрднрд╡рдЬрдиреНрдп рдФрд░ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдХрд░реАрдмреА рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣рдореЗрдВ рдЕрдкрдиреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддреЗ рд╣реИрдВ: рдмрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрди рдирдХрд▓реА рдЖрдЧрдорди рдХрд╛ рд╕рдордп рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреЙрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рддреЗрдЬреА рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдЕрдВрддрд░рд╛рд▓ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд┐рддрд░рдг рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

p(T)= frac1 taueтИТT/ tau


рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕реВрддреНрд░ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реНрдЯреЙрдк рдкрд░ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдорд┐рд▓реЗрдЧрд╛:

E[W]= frac int 0inftyT2 eтИТT/ tau2 int 0inftyT eтИТT/ tau frac2 tau32( tau2)= tau


рдкреЙрд╕реЛрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рдЙрдбрд╝рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдЖрдЧрдорди рдХреЗ рдмреАрдЪ рдФрд╕рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рдорд╛рди рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдкреЙрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдореГрддрд┐ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдЕрдЧрд▓реЗ рдШрдЯрдирд╛ рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдордп рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд╕ рд╕реНрдЯреЙрдк рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░, рдПрдХ рдмрд╕ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╣реЛрддрд╛ рд╣реИ: рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 10 рдорд┐рдирдЯ рд╣реИ, рднрд▓реЗ рд╣реА рдкрд┐рдЫрд▓реА рдмрд╕ рд╕реЗ рдХрд┐рддрдирд╛ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реЛ! рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рддрдиреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдЕрдЧрд▓реА рдмрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдордп рд╣рдореЗрд╢рд╛ рдареАрдХ 10 рдорд┐рдирдЯ рд╣реИ: рдкреЙрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдкрдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЗ рд▓рд┐рдП "рдХреНрд░реЗрдбрд┐рдЯ" рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕рдордпрдмрд╛рд╣реНрдп


рдЙрдкрд░реЛрдХреНрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрджрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд╕ рдЖрдЧрдорди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЙрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реИ?


рд╕реНрд░реЛрдд: рд╕рд┐рдПрдЯрд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рд╡рд╣рди рдпреЛрдЬрдирд╛

рдЖрдЗрдП рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдХрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХреИрд╕реЗ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреБрдЫ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ : рдЖрдЧрдорди_рдЯрд╛рдЗрдореНрд╕.рд╡рд╕реНрдХ (3 рдПрдордмреА рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓)ред рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд░реИрдкрд┐рдбрд░рд╛рдЗрдб рдмрд╕реЛрдВ рд╕реА, рдбреА рдФрд░ рдИ рдХреЗ рд▓рд┐рдП рдирд┐рдпреЛрдЬрд┐рдд рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдЧрдорди рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рдПрдЯрд▓ рд╢рд╣рд░ рдХреЗ рддреАрд╕рд░реЗ рдФрд░ рдкрд╛рдЗрдХ рдмрд╕ рд╕реНрдЯреЙрдк рдкрд░ред 2016 рдХреА рджреВрд╕рд░реА рддрд┐рдорд╛рд╣реА рдореЗрдВ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╢рд┐рдВрдЧрдЯрди рд╕реНрдЯреЗрдЯ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯреЗрд╢рди рд╕реЗрдВрдЯрд░ рд╕реЗ рдорд╛рд░реНрдХ рд╣реЙрд▓рдирдмреИрдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж)ред

 import pandas as pd df = pd.read_csv('arrival_times.csv') df = df.dropna(axis=0, how='any') df.head() 

OPD_DATEVEHICLE_IDрдЖрд░рдЯреАрдИDIRTRIP_IDSTOP_IDSTOP_NAMESCH_STOP_TMACT_STOP_TM
02016/03/266201673рдПрд╕309081774313RD AVE рдФрд░ PIKE ST (431)01:11:5701:13:19
12016/03/266201673рдПрд╕309080334313RD AVE рдФрд░ PIKE ST (431)23:19:5723:16:13
22016/03/266201673рдПрд╕309080284313RD AVE рдФрд░ PIKE ST (431)21:19:5721:18:46
32016/03/266201673рдПрд╕309080194313RD AVE рдФрд░ PIKE ST (431)19:04:5719:01:49
42016/03/266201673рдПрд╕309082524313RD AVE рдФрд░ PIKE ST (431)16:42:5716:42:39

рдореИрдВрдиреЗ рд░реИрдкрд┐рдбрд░рд╛рдЗрдб рдбреЗрдЯрд╛ рдХреЛ рдЪреБрдирд╛, рдЬрд┐рд╕рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рджрд┐рди рдХреЗ рд▓рд┐рдП рдмрд╕реЗрдВ 10-15 рдорд┐рдирдЯ рдХреЗ рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдЪрд▓рддреА рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рд░реВрдЯ рд╕реА рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рдпрд╛рддреНрд░реА рд╣реВрдВред

рдбреЗрдЯрд╛ рдХреА рд╕рдлрд╛рдИ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рджреГрд╢реНрдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рдбреЗрдЯрд╛ рд╕рдлрд╛рдИ рдХрд░реЗрдВрдЧреЗ:

 # combine date and time into a single timestamp df['scheduled'] = pd.to_datetime(df['OPD_DATE'] + ' ' + df['SCH_STOP_TM']) df['actual'] = pd.to_datetime(df['OPD_DATE'] + ' ' + df['ACT_STOP_TM']) # if scheduled & actual span midnight, then the actual day needs to be adjusted minute = np.timedelta64(1, 'm') hour = 60 * minute diff_hrs = (df['actual'] - df['scheduled']) / hour df.loc[diff_hrs > 20, 'actual'] -= 24 * hour df.loc[diff_hrs < -20, 'actual'] += 24 * hour df['minutes_late'] = (df['actual'] - df['scheduled']) / minute # map internal route codes to external route letters df['route'] = df['RTE'].replace({673: 'C', 674: 'D', 675: 'E'}).astype('category') df['direction'] = df['DIR'].replace({'N': 'northbound', 'S': 'southbound'}).astype('category') # extract useful columns df = df[['route', 'direction', 'scheduled', 'actual', 'minutes_late']].copy() df.head() 

рдорд╛рд░реНрдЧрджрд┐рд╢рд╛рд╕рдордп рд╕рд╛рд░рд┐рдгреАрддрдереНрдп рдпрд╣ рд╣реИред рдЖрдЧрдордирддрд╛рд░рдмрдВрджреА (рдиреНрдпреВрдирддрдо)
0рд╕реАрджрдХреНрд╖рд┐рдг2016-03-26 01:11:572016-03-26 01:13:191.366667
1рд╕реАрджрдХреНрд╖рд┐рдг2016-03-26 23:19:572016-03-26 23:16:13-рей.рен,рейрей,рейрейрей
2рд╕реАрджрдХреНрд╖рд┐рдг2016-03-26 21:19:572016-03-26 21:18:46-рез.рез,реорей,рейрейрей
3рд╕реАрджрдХреНрд╖рд┐рдг2016-03-26 19:04:572016-03-26 19:01:49-рей.рез,рейрей,рейрейрей
4рд╕реАрджрдХреНрд╖рд┐рдг2016-03-26 16:42:572016-03-26 16:42:39-.рей,режреж,режрежреж

рдмрд╕реЗрдВ рдХрд┐рддрдиреА рджреЗрд░ рд╕реЗ рдЪрд▓ рд░рд╣реА рд╣реИрдВ?


рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЫрд╣ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рд╕реА, рдбреА рдФрд░ рдИ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рдФрд░ рджрдХреНрд╖рд┐рдг рджрд┐рд╢рд╛рдПрдВред рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрди рдЫрд╣ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдд рд╕рдордп рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЛрдг рдХрд╛ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдмрдирд╛рдПрдВред

 import seaborn as sns g = 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('minutes late', 'number of buses'); 



рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдмрд╕реЗрдВ рд░реВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдХрд░реАрдм рд╣реИрдВ рдФрд░ рдЕрдВрдд рд╕реЗ рдЗрд╕рдХреА рдУрд░ рдЕрдзрд┐рдХ рдЬрд╛рддреА рд╣реИрдВред рдбреЗрдЯрд╛ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ: рджрдХреНрд╖рд┐рдгреА рдорд╛рд░реНрдЧ C рдкрд░ рд╣рдорд╛рд░рд╛ рд░реЛрдХ, рд╕рд╛рде рд╣реА рдЙрддреНрддрд░реА рдбреА рдФрд░ рдИ рдорд╛рд░реНрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдХрд░реАрдм рд╣реИ, рдФрд░ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ, рдЕрдВрддрд┐рдо рдЧрдВрддрд╡реНрдп рд╕реЗ рджреВрд░ рдирд╣реАрдВ рд╣реИред

рдЕрдиреБрд╕реВрдЪрд┐рдд рдФрд░ рдордирд╛рдпрд╛ рдЕрдВрддрд░рд╛рд▓


рдЗрди рдЫрд╣ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗ рдЧрдП рдФрд░ рдирд┐рдпреЛрдЬрд┐рдд рдмрд╕ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЖрдЗрдП рдЗрди рдЕрдВрддрд░рд╛рд▓реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдбреЛрдВ рдореЗрдВ groupby рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:

 def compute_headway(scheduled): minute = np.timedelta64(1, 'm') return scheduled.sort_values().diff() / minute grouped = 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('actual interval (minutes)', 'number of buses'); 



рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЗ рдШрд╛рддреАрдп рд╡рд┐рддрд░рдг рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИ: рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЕрд╕рдВрдЧрдд рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рд╡рд┐рддрд░рдг рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рджреЗрдЦреЗ рдЧрдП рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрдЬрд╛рдп рдирд┐рдпреЛрдЬрд┐рдд, рдЖрд░реЗрдЦреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред

 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('scheduled interval (minutes)', 'frequency'); 



рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдкреНрддрд╛рд╣ рдХреЗ рджреМрд░рд╛рди рдмрд╕реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдЪрд▓рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрд╕ рд╕реНрдЯреЙрдк рд╕реЗ тАЛтАЛрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпреВрдирд┐рдлреЙрд░реНрдо рдХрд╛ рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рдирд╛


рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдорд╛рди рдЕрдВрддрд░рд╛рд▓ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд╕реЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрддреНрддрд░ рдХреА рдУрд░ рдорд╛рд░реНрдЧ рдИ рдХреЗ рд▓рдЧрднрдЧ 2000 рдмрд╕реЗрдВ 10 рдорд┐рдирдЯ рдХреЗ рдирд┐рдпреЛрдЬрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рдеред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд▓рдВрдмрддрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд▓рд╛рдЧреВ рд╣реИ, рдЖрдЗрдП рдбреЗрдЯрд╛ рдХреЛ рдорд╛рд░реНрдЧреЛрдВ, рджрд┐рд╢рд╛рдУрдВ рдФрд░ рдирд┐рдпреЛрдЬрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реНрдЯреИрдХ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдП рдереЗред рдпрд╣ рд╡рд┐рд▓рдВрдмрддрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рддреБрд▓рдирд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддреЗ рд╣реБрдП, рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреА рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

 def stack_sequence(data): # first, sort by scheduled time data = data.sort_values('scheduled') # re-stack data & recompute relevant quantities data['scheduled'] = data['scheduled_interval'].cumsum() data['actual'] = data['scheduled'] + data['minutes_late'] data['actual_interval'] = data['actual'].sort_values().diff() return data subset = 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() 

рдорд╛рд░реНрдЧрджрд┐рд╢рд╛рд╕рдордп рд╕рд╛рд░рд┐рдгреАрддрдереНрдп рдпрд╣ рд╣реИред рдЖрдЧрдордирддрд╛рд░рдмрдВрджреА (рдиреНрдпреВрдирддрдо)рддрдереНрдп рдпрд╣ рд╣реИред рдЕрдВрддрд░рд╛рд▓рдЕрдиреБрд╕реВрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓
0рд╕реАрдЙрддреНрддрд░10.012.4000002.400000NaN10.0
1рд╕реАрдЙрддреНрддрд░20.027.1500007.1500000.18333310.0
2рд╕реАрдЙрддреНрддрд░30.026.966667-рей.реж,рейрей,рейрейрей14.56666710.0
3рд╕реАрдЙрддреНрддрд░40.035.516667-рек.рек,реорей,рейрейрей8.36666710.0
4рд╕реАрдЙрддреНрддрд░50.053.5833333.58333318.06666710.0

рдХреНрд▓рд┐рдпрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдкрд░, рдЖрдк рдЖрдЧрдорди рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдФрд░ рджрд┐рд╢рд╛ рдореЗрдВ рдмрд╕реЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рддрд░рдг рдХрд╛ рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 for route in ['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('actual interval (min)', 'count') g.fig.set_size_inches(8, 4) g.fig.suptitle(f'{route} line', y=1.05, fontsize=14) 







рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдордирд╛рдпрд╛ рдЕрдВрддрд░рд╛рд▓ рдХрд╛ рд╡рд┐рддрд░рдг рд▓рдЧрднрдЧ рдЧреМрд╕рд┐рдпрди рд╣реИред рдпрд╣ рдирд┐рдпреЛрдЬрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдкрд╛рд╕ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рд╣реИ рдЬреЛ рдорд╛рд░реНрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрдо рд╣реИ (рд╕реА рдХреЗ рд▓рд┐рдП рджрдХреНрд╖рд┐рдг, рдбреА / рдИ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░) рдФрд░ рдЕрдВрдд рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИред рджреГрд╖реНрдЯрд┐ рд╕реЗ рднреА, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдЧрдорди рдЕрдВрддрд░рд╛рд▓ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдШрд╛рддреАрдп рд╡рд┐рддрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдореБрдЦреНрдп рдзрд╛рд░рдгрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╕рд┐рдореБрд▓реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╕ рдорд╛рд░реНрдЧ, рджрд┐рд╢рд╛ рдФрд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛:

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

  рдорд╛рд░реНрдЧ рдирд┐рд░реНрджреЗрд╢рди рдЕрдиреБрд╕реВрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓
 C рдЙрддреНрддрд░ 10.0 7.8 +/- 12.5
                       12.0 7.4 +/- 5.7
                       15.0 8.8 +/- 6.4
          рджрдХреНрд╖рд┐рдг 10.0 6.2 +/- 6.3
                       12.0 6.8 +/- 5.2
                       15.0 8.4 +/- 7.3
 D рдЙрддреНрддрд░ 10.0 6.1 +/- 7.1
                       12.0 6.5 +/- 4.6
                       15.0 7.9 +/- 5.3
          рджрдХреНрд╖рд┐рдг 10.0 6.7 +/- 5.3
                       12.0 7.5 +/- 5.9
                       15.0 8.8 +/- 6.5
 рдИ рдЙрддреНрддрд░ 10.0 5.5 +/- 3.7
                       12.0 6.5 +/- 4.3
                       15.0 7.9 +/- 4.9
          рджрдХреНрд╖рд┐рдг 10.0 6.8 +/- 5.6
                       12.0 7.3 +/- 5.2
                       15.0 8.7 +/- 6.0
 рдирд╛рдо: рд╡рд╛рд╕реНрддрд╡рд┐рдХ, dtype: рдСрдмреНрдЬреЗрдХреНрдЯ 

рдФрд╕рдд рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп, рд╢рд╛рдпрдж рдПрдХ рдпрд╛ рджреЛ рдорд┐рдирдЯ, рдпреЛрдЬрдирд╛рдмрджреНрдз рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдд рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХрд╛ рдЕрд░реНрде рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╕рдЪ рдирд╣реАрдВ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд┐рд▓рдВрдмрддрд╛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдПрдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореЙрдбрд▓рд┐рдВрдЧ, рд╕рдВрднрд╛рд╡рдирд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рдерд╛ред рдпрджреНрдпрдкрд┐ рд╣рдордиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдмрд╕ рдорд╛рд░реНрдЧ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реАрдХреНрд╖рдг рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ: рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрдЦреНрдп рдзрд╛рд░рдгрд╛ - рдХрд┐ рдмрд╕реЛрдВ рдХрд╛ рдЖрдЧрдорди рдкреЙрдЗрдЬрд╝рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ - рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА рдореЗрдВ, рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ: рдкреЙрдЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╕реНрдореГрддрд┐рд╣реАрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдорд╛рдирддреА рд╣реИ рдХрд┐ рдЖрдЧрдорди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд┐рдЫрд▓реЗ рдЖрдЧрдорди рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдордп рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рд╡рд╣рди рдкреНрд░рдгрд╛рд▓реА рдиреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╕рдордп рд╕рд╛рд░рд┐рдгреА рдмрдирд╛рдИ рд╣реИ: рдмрд╕реЗрдВ рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдордп рдкрд░ рдЕрдкрдиреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд▓рд┐рдП рдЪреБрдиреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред

рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдмрдХ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реИред рдХрднреА-рдХрднреА рдкреЛрдЗрдЬрд╝рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдЧрдорди рдХреЗ рд╕рдордп рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдПрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдПрдХ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рдзрд╛рд░рдгрд╛рдПрдВ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рд╣реИрдВред рдЕрдХреНрд╕рд░ рдРрд╕реА рдзрд╛рд░рдгрд╛рдПрдБ рдЬреЛ рд╕рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВ, рдЙрди рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рд╕рдЪ рдирд╣реАрдВ рд╣реИрдВред

Source: https://habr.com/ru/post/hi428610/


All Articles