Size: 1202
Comment:
|
Size: 3634
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 2: | Line 2: |
Stata supports these '''numeric functions''' in the global scope. |
|
Line 9: | Line 11: |
== Random Number Functions == | == Dhms == |
Line 11: | Line 13: |
=== Runiform === | Convert an date value (formatted as `%td) plus an hour, minute, and second into the number of milliseconds since the Stata epoch (`01jan1960 00:00:00.000`) ''ignoring'' leap seconds. {{{ generate double datetime = dhms(dmy(day, month, year), hour, minute, second) format date %tc }}} See also `Cdhms`, which creates returns a number that should instead be formatted as `%tC` because it does ''not'' ignore leap seconds. ---- == Dmy == Convert a day, month, and year into the number of days since the Stata epoch (`01jan1960 00:00:00.000`). {{{ generate long date = dmy(day, month, year) format date %td }}} ---- == Hms == Convert an hour, minute, and second into the number of milliseconds since midnight ''ignoring'' leap seconds. {{{ generate double datetime = hms(hour, minute, second) format date %tc }}} See also `Chms`, which creates returns a number that should instead be formatted as `%tC` because it does ''not'' ignore leap seconds. ---- == Mdy == Convert a month, day, and year into the number of days since the Stata epoch (`01jan1960 00:00:00.000`). {{{ generate long date = mdy(month, day, year) format date %td }}} ---- == Mdyhms == Convert a day, month, year, hour, minute, and second into the number of milliseconds since the Stata epoch (`01jan1960 00:00:00.000`) ''ignoring'' leap seconds. {{{ generate double datetime = mdyhms(month, day, year, hour, minute, second) format date %tc }}} See also `Cmdyhms`, which creates returns a number that should instead be formatted as `%tC` because it does ''not'' ignore leap seconds. ---- == Real == ---- == Runiform == |
Line 14: | Line 91: |
Below is a demonstration for how an [[SurveySamples#Sampling_Methods|SRS sample]] can be drawn. |
|
Line 18: | Line 97: |
sort r_sampled generate byte sampled = _n <= 100 |
|
Line 20: | Line 101: |
The return value is a [[Stata/Types|double]]; it will be within `a + c(epsdouble)` and `b − c(epsdouble)`. | The return value is a [[Stata/DataTypes|double]]; it will be within `a + c(epsdouble)` and `b − c(epsdouble)`. |
Line 22: | Line 103: |
By default, `runiform` uses the 64-bit Mersenne Twister algorithm. Alternate algorithms are available; see '''`set rng`'''. | By default, `runiform` uses the 64-bit Mersenne Twister algorithm. Alternate algorithms are available; see [[Stata/Set#Rng|set rng]]. See also [[Stata/Set#Seed|set seed]] for designing deterministic programs. ---- |
Line 26: | Line 111: |
=== Set Rng === | == String == |
Line 28: | Line 113: |
To use an alternate random number generation algorithm, set the rng value to something other than `default`. | Alias for `strofreal`. |
Line 30: | Line 115: |
{{{ set rng default }}} Possible values include... * `mt64` (64-bit Mersenne Twister) * `mt64s` (stream algorithm based on the 64-bit Mersenne Twister) * `kiss32` (32-bit keep it simple stupid) In Stata 14, the default flipped from `kiss32` to `mt64`. |
---- |
Line 44: | Line 119: |
=== Set Seed === | == StrOfReal == |
Line 46: | Line 121: |
To make random number generation reproducible, set a seed value. | ---- == Y == Convert a year into the number of years since the Stata epoch (`01jan1960 00:00:00.000`). |
Line 49: | Line 130: |
set seed 42 | generate int year = y(year) format year %ty |
Line 52: | Line 134: |
A seed value must be an integer, non-negative, and no greater than 2^31^ − 1. | ---- == Yh == Convert a year and half year into the number of half years since the Stata epoch (`01jan1960 00:00:00.000`). {{{ generate int halfyears = yh(year, halfyear) format halfyears %th }}} ---- == Ym == Convert a year and month into the number of months since the Stata epoch (`01jan1960 00:00:00.000`). {{{ generate int months = y(year, month) format months %tm }}} ---- == Yq == Convert a year and quarter into the number of years since the Stata epoch (`01jan1960 00:00:00.000`). {{{ generate int quarters = yq(year, quarter) format quarters %tq }}} ---- == Yw == Convert a year and week into the number of weeks since the Stata epoch (`01jan1960 00:00:00.000`). {{{ generate int weeks = yw(year, week) format weeks %tw }}} |
Stata Numeric Functions
Stata supports these numeric functions in the global scope.
Contents
Dhms
Convert an date value (formatted as %td) plus an hour, minute, and second into the number of milliseconds since the Stata epoch (01jan1960 00:00:00.000`) ignoring leap seconds.
generate double datetime = dhms(dmy(day, month, year), hour, minute, second) format date %tc
See also Cdhms, which creates returns a number that should instead be formatted as %tC because it does not ignore leap seconds.
Dmy
Convert a day, month, and year into the number of days since the Stata epoch (01jan1960 00:00:00.000).
generate long date = dmy(day, month, year) format date %td
Hms
Convert an hour, minute, and second into the number of milliseconds since midnight ignoring leap seconds.
generate double datetime = hms(hour, minute, second) format date %tc
See also Chms, which creates returns a number that should instead be formatted as %tC because it does not ignore leap seconds.
Mdy
Convert a month, day, and year into the number of days since the Stata epoch (01jan1960 00:00:00.000).
generate long date = mdy(month, day, year) format date %td
Mdyhms
Convert a day, month, year, hour, minute, and second into the number of milliseconds since the Stata epoch (01jan1960 00:00:00.000) ignoring leap seconds.
generate double datetime = mdyhms(month, day, year, hour, minute, second) format date %tc
See also Cmdyhms, which creates returns a number that should instead be formatted as %tC because it does not ignore leap seconds.
Real
Runiform
runiform(a,b) returns a random number between a and b. If no parameters are specified, the defaults of 0 and 1 are used.
Below is a demonstration for how an SRS sample can be drawn.
set seed 123456 generate double r_sampled = runiform() sort r_sampled generate byte sampled = _n <= 100
The return value is a double; it will be within a + c(epsdouble) and b − c(epsdouble).
By default, runiform uses the 64-bit Mersenne Twister algorithm. Alternate algorithms are available; see set rng.
See also set seed for designing deterministic programs.
String
Alias for strofreal.
StrOfReal
Y
Convert a year into the number of years since the Stata epoch (01jan1960 00:00:00.000).
generate int year = y(year) format year %ty
Yh
Convert a year and half year into the number of half years since the Stata epoch (01jan1960 00:00:00.000).
generate int halfyears = yh(year, halfyear) format halfyears %th
Ym
Convert a year and month into the number of months since the Stata epoch (01jan1960 00:00:00.000).
generate int months = y(year, month) format months %tm
Yq
Convert a year and quarter into the number of years since the Stata epoch (01jan1960 00:00:00.000).
generate int quarters = yq(year, quarter) format quarters %tq
Yw
Convert a year and week into the number of weeks since the Stata epoch (01jan1960 00:00:00.000).
generate int weeks = yw(year, week) format weeks %tw