Újdonságok a -ben

Új dátum és idő funkciók

A dátumok és időpontok (vagy dátumidők) túlságosan is ismerős fogalmak, amelyeket gyakran természetesnek veszünk. Az adatkezelés és a statisztikai elemzés (és az alapul szolgáló számítógépes rendszer) alatt állnak, különböző fontosságúak a feladattól függően.
Néha bonyolulttá válhatnak, és foglalkozni kell a naptárak és órák furcsaságaival.

Kiemelt

  • Az időtartamokat kiszámító funkciók, például az életkor és a dátumidő közötti egyéb különbségek
  • Funkciók, amelyek kiszámítják a relatív dátumokat, vagy más dátumokat, például az előző vagy a következő születésnapot vagy évfordulót egy adott dátumhoz képest
  • Funkciók, amelyek kivonják a különböző komponenseket a dátumidő értékekből és változókból

Például, amikor a kiszivárogtatások (a február 29-én született személyek) mikor ünneplik születésnapjukat nem szökő években. Nem csak négyévente. Mi a különbség mondjuk milliszekundumban, két időbélyeg között, ha szökő másodperceket számolunk, a Koordinált Világidő (UTC) szabványai alapján?

Hozzáadtunk egy dátumidő függvénykészletet, mind a Statában, mind a Mata-ban, hogy pontosan és kényelmesen kezelhessük az időtartamokat (1) az időtartamok, például az életkor és az egyéb időidő-különbségek kiszámításához; (2) relatív dátumok keresése, például egy adott dátum utáni következő születésnap; és (3) a Stata datetime értékek és változók összetevőinek kinyerése.

Lássuk hogyan mükődik

A dátum időtartama

Ha február 29-én születtél, akkor március 1-jén öregedsz az Egyesült Királyságban, de február 28-án Tajvanon – természetesen nem szökő években. A vezetői engedélyek megújítását vagy a léc idő előtti elütésének büntetését ennek megfelelően határozzák meg. Az új függvény age() megadja az életkort egész számokban, opcionális argumentummal a szivárgások kezelésére. Például, ha 2000. szökőnapján születtél, akkor az alábbiak azt mondják, hogy 2018. február végén még mindig 17 éves vagy, mert március 1-e a születésnapod nem szökő években.

. display age(td(29feb2000), td(28feb2018), "01mar")

Megjegyzés: A td() egy olyan függvény, amely a Statát kényelmesen megérteti a szó szerinti dátumokkal.
Nem biztosítjuk azt a lehetőséget, hogy az évvesztesek csak négyévente ünnepelhessék születésnapjukat, figyelembe véve a szörnyű következményeket, mint például Frederic ugratásának kegyetlen sorsa a Penzance kalózai című komikus operában, akinek 63 évet kellett várnia, hogy egyesüljön szerelmével. „Huszonegyedik születésnap” (Sullivan 1923).
A datediff() függvény kiszámítja a dátumok közötti különbségeket általában a legközelebbi egész számra kerekítve, különböző időegységekben: év, hónap vagy nap. Az age() a datediff() speciális esete években. Például, ha 2000. július 31-én mondja ki az igent, megmentheti a napot azzal a tudattal, hogy 10.házassági évfordulóján 3652napig volt házas.

. display datediff(td(31jul2000), td(31jul2010), "day")

A biztosítótársaságokat érdekelhetik az ember életkorának részleteit, az életkor minden tizedesjegye dollárra változik. Az age_frac() és a datediff_frac() függvények pontos törtekkel megtalálják az életkort, és általában az év, hónap vagy nap egységeinek dátumkülönbségét.

. display datediff_frac(td(17nov2019), today(), "month")

megmondja a hónapok pontos számát a COVID-19 első dokumentált esetének napjától napjainkig. A dátumkülönbségek pontos kiszámítása fontos lehet a túlélési modellekben. A datediff_frac() és az age() kompatibilis módon számítja ki a különbségeket. Tehát, ha a datediff_frac() dátumát használja a túlélési modellben, és az age() korokat használja előrejelzőként a modellben, akkor azok következetesek lesznek.

Időtartalom

Általában bízunk abban, hogy óráink tökéletesen szinkronizálódnak a föld mozgásával, de ez nem mindig úgy működik, mint az óramű. Körülbelül 1972 óta minden évben egy szökő másodpercet adunk hozzá, hogy az óráink a föld forgásának lelassulásához igazodjanak. Vita folyik a szökő másodpercek hasznosságáról, így a Statánál mindkettőt könyveljük, vagyis az időt szökő másodpercekkel és anélkül.
In function names, we use C for the former and c for the latter. A függvénynevekben előbbire C-t, utóbbira c-t használunk.
A Function isleapsecond() megmondja, amint azt sejteni lehetett, hogy a kérdéses idő ugrásszerű-e vagy sem. Ez hasznos lehet, ha tudatja Önnel, vannak-e olyan ritka másodpercek az adatokban, és milyen funkciókat lehet biztonságosan használni.
Funkciók a Clockdiff() és a clockdiff() a legközelebbi egész számra kerekítve keresi meg a különbséget két alkalommal, tetszőleges egységben, szökő másodpercekkel és anélkül. A Clockdiff_frac() és a clockdiff_frac() pontosabban megtalálja ezt a különbséget. Ha időbélyegeket rögzített (szökő másodpercekkel), amikor az égi objektumok egy teljes pályát begin és end (mivel a Stata változók kezdődnek és végződnek), ez napokban generálja a keringési periódusokat.

. generate double period = Clockdiff_frac(begin, end, "day")

Relatív dátumok

Mindannyian értünk olyan sztringeket, mint „1776. július 4”. A Statának azonban rugalmasabb reprezentációra van szüksége, amely lehetővé teszi például a különbségek kiszámítását. A Stata valójában számként tartja a dátumokat – a kiválasztott referenciaponthoz viszonyított napok száma: 1960. január 1. Időnként ez az ezredmásodpercek száma az 1960. január 1-jei éjfél ütésétől számítva.
Nem számítunk arra, hogy a felhasználók hozzáadják vagy kivonják ezeket az érthetetlen számokat, de lehetővé teszik a Stata dátumok kiszámítását, más dátumokkal összehasonlítva. Most kezeljük a születésnapokat egy adott dátumhoz viszonyítva, és a dátumokat egy adott dátumhoz viszonyítva.
A birthday() függvény megadja a születésnapot, mint Stata dátumot egy adott évben. previousbirthday() és nextbirthday() adja vissza az előző és a következő születésnap statisztikai dátumát egy adott dátumhoz viszonyítva.
A daysinmonth(), firstdayofmonth() és lastdayofmonth() függvények először megtalálják az adott Stata dátum hónapját, és visszaadják az adott hónap napjai számát, az adott hónap első napjának Stata dátumát és a Stata dátumot abban a hónapban az utolsó napra.
A bosszantó szökőnap körülbelül négyévente jelenik meg 1582 óta, amikor XIII. Gergely pápa létrehozta a ma már széles körben használt Gergely-naptárat a Julián-naptár kiigazításával (XIII. Gergely pápa, 1582). A módosítás azzal a téves feltételezéssel foglalkozott, hogy az átlagos év pontosan 365,25 napig tart, és gondoskodott arról, hogy a húsvét közelebb kerüljön ahhoz az időponthoz, amikor annak kellene, vagyis a márciusi nap-éj egyenlőségnek. A Gergely-naptár úgy reformálta a Julián-naptárt, hogy évszázadokban elejtette a szökőéveket, amelyek nem voltak pontosan oszthatók 400-mal.
Az isleapyear(), previousleapyear(), és nextleapyear() függvények egy évet vesznek igénybe, és fájdalmasan nyilvánvalóak, hogy mit csinálnak.

Referenciák

Pope Gregory XIII. 1582. Inter gravissimas.
Sullivan, A. 1923. The Pirates of Penzance or the Slave of the Duty, libretto by W.S. Gilbert, G. Schimer.