Differences between revisions 2 and 12 (spanning 10 versions)
Revision 2 as of 2022-03-16 15:42:29
Size: 1254
Comment:
Revision 12 as of 2025-03-05 01:56:01
Size: 5007
Comment: Finished rewrite
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 == == General Purpose ==
Line 11: Line 13:
=== Runiform === ||'''Function Name'''||'''Meaning''' ||'''Example''' ||
||`abs(n)` ||Absolute value function || ||
||`ceil(n)` ||Round up to an integer || ||
||`comb(n,k)` ||[[Statistics/Combinations|Combinatorial function|| ||
||`exp(n)` ||Exponential function: ''e^n^'' || ||
||`expm1(n)` ||High precision implementation of `exp(n)-1` || ||
||`floor(n)` ||Round down to an integer || ||
||`int(n)` ||Round towards 0 to an integer ||`-5 = int(-5.8)` ||
||`invlogit(n)` ||Inverse [[Statistics/Logit|logit function]] || ||
||`ln(n)` ||Natural log function || ||
||`logit(n)` ||[[Statistics/Logit|Logit function]] || ||
||`ln1m(n)` ||High precision implementation of `ln(n-1)` || ||
||`ln1p(n)` ||High precision implementation of `ln(n+1)` || ||
||`max(n,...)` ||Returns the value of the greatest argument ||`5 = max(1,.,5)` ||
||`mix(n,...)` ||Returns the value of the least argument ||`1 = min(1,.,5)` ||
||`mod(x,y)` ||x modulo y || ||
||`real(s)` ||Convert string s into a real number || ||
||`round(n)` ||Round to the nearest integer || ||
||`round(n,p)` ||Round to the nearest value for a given precision|| ||
||`sign(n)` ||Returns -1 if n<0, 0 if n=0, and 1 if n>0 || ||
||`sqrt(n)` ||Square root function || ||
||`string(n)` ||Convert numeric value n into a string || ||
||`strofreal(n)` ||Convert numeric value n into a string || ||
||`sum(x)` ||Running sum of variable x || ||
||`trunc(n)` ||Round towards 0 to an integer ||`-5 = trunc(-5.8)`||
Line 13: Line 39:
'''`runiform(a,b)`''' returns a random number between `a` and `b`. If no parameters are specified, the defaults of `0` and `1` are used.

{{{
set seed 123456
generate double r_sampled = runiform()
sort r_sampled
generate byte sampled = _n <= 100
}}}

The return value is a [[Stata/Types|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`'''.
----
Line 28: Line 43:
=== Set Rng ===
Line 30: Line 44:
To use an alternate random number generation algorithm, set the rng value to something other than `default`. == Date and Time Functions ==
Line 32: Line 46:
{{{
set rng default
}}}
These are largely defined in terms of ''dates'' and ''times'', which have a standardized meaning. They count days (seconds) from the Stata epoch: `01jan1960 00:00:00.000`.
Line 36: Line 48:
Possible values include... ||'''Function Name''' ||'''Meaning''' ||'''Output Format'''||
||`dhms(d,h,m,s)` ||Attach hour, minute, and second data to a date ||`%tc` ||
||`Cdhms(d,h,m,s)` ||Attach hour, minute, and second data to a date ||`%tC` ||
||`dmy(d,m,y)` ||Calculate a date from a day, month, and year ||`%td` ||
||`hms(h,m,s)` ||Calculate a time from an hour, minute, and second ||`%tc` ||
||`Chms(h,m,s)` ||Calculate a time from an hour, minute, and second ||`%tC` ||
||`mdy(m,d,y)` ||Calculate a date from a month, day, and year ||`%td` ||
||`mdyhms(m,d,y,h,m,s)` ||Calculate a time from a year, month, day, hour, minute, and second ||`%tc` ||
||`Cmdyhms(m,d,y,h,m,s)`||Calculate a time from a year, month, day, hour, minute, and second ||`%tC` ||
||`y(y)` ||Convert a numeric year into the number of years since the epoch ||`%ty` ||
||`yh(y,h)` ||Convert a year and halfyear into the number of half years since the epoch||`%th` ||
||`ym(y,m)` ||Convert a year and month into the number of months since the epoch ||`%tm` ||
||`yq(y,q)` ||Convert a year and quarter into the number of quarters since the epoch ||`%tq` ||
||`yw(y,w)` ||Convert a year and week into the number of weeks since the epoch ||`%tw` ||
Line 38: Line 63:
 * `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 46: Line 67:
=== Set Seed === == Statistical Functions ==
Line 48: Line 69:
To make random number generation reproducible, set a seed value. ||'''Function Name'''||'''Meaning''' ||'''Example''' ||
||`invnormal(p)` ||Inverse cumulative standard normal distribution ||`1.959964 = invnormal(1-0.05/2)`||
||`normal(z)` ||Cumulative standard normal distribution ||`.9750021 = normal(1.96)` ||
||`runiform()` ||Random number from uniform distribution from 0 to 1|| ||
||`runiform(a,b)` ||Random number from uniform distribution from a to b|| ||
Line 50: Line 75:
{{{
set seed 42
}}}
Of relevance to random values: see [[Stata/Set#Rng|set rng]] and [[Stata/Set#Seed|set seed]].
Line 54: Line 77:
A seed value must be an integer, non-negative, and no greater than 2^31^ − 1. ----
Line 56: Line 79:


== See also ==

[[www.stata.com/manuals/fnmathematicalfunctions.pdf|Stata mathematical functions]]

[[https://www.stata.com/manuals/ddatetime.pdf|Stata datetimes]]

Stata Numeric Functions

Stata supports these numeric functions in the global scope.


General Purpose

Function Name

Meaning

Example

abs(n)

Absolute value function

ceil(n)

Round up to an integer

comb(n,k)

[[Statistics/Combinations|Combinatorial function

exp(n)

Exponential function: en

expm1(n)

High precision implementation of exp(n)-1

floor(n)

Round down to an integer

int(n)

Round towards 0 to an integer

-5 = int(-5.8)

invlogit(n)

Inverse logit function

ln(n)

Natural log function

logit(n)

Logit function

ln1m(n)

High precision implementation of ln(n-1)

ln1p(n)

High precision implementation of ln(n+1)

max(n,...)

Returns the value of the greatest argument

5 = max(1,.,5)

mix(n,...)

Returns the value of the least argument

1 = min(1,.,5)

mod(x,y)

x modulo y

real(s)

Convert string s into a real number

round(n)

Round to the nearest integer

round(n,p)

Round to the nearest value for a given precision

sign(n)

Returns -1 if n<0, 0 if n=0, and 1 if n>0

sqrt(n)

Square root function

string(n)

Convert numeric value n into a string

strofreal(n)

Convert numeric value n into a string

sum(x)

Running sum of variable x

trunc(n)

Round towards 0 to an integer

-5 = trunc(-5.8)


Date and Time Functions

These are largely defined in terms of dates and times, which have a standardized meaning. They count days (seconds) from the Stata epoch: 01jan1960 00:00:00.000.

Function Name

Meaning

Output Format

dhms(d,h,m,s)

Attach hour, minute, and second data to a date

%tc

Cdhms(d,h,m,s)

Attach hour, minute, and second data to a date

%tC

dmy(d,m,y)

Calculate a date from a day, month, and year

%td

hms(h,m,s)

Calculate a time from an hour, minute, and second

%tc

Chms(h,m,s)

Calculate a time from an hour, minute, and second

%tC

mdy(m,d,y)

Calculate a date from a month, day, and year

%td

mdyhms(m,d,y,h,m,s)

Calculate a time from a year, month, day, hour, minute, and second

%tc

Cmdyhms(m,d,y,h,m,s)

Calculate a time from a year, month, day, hour, minute, and second

%tC

y(y)

Convert a numeric year into the number of years since the epoch

%ty

yh(y,h)

Convert a year and halfyear into the number of half years since the epoch

%th

ym(y,m)

Convert a year and month into the number of months since the epoch

%tm

yq(y,q)

Convert a year and quarter into the number of quarters since the epoch

%tq

yw(y,w)

Convert a year and week into the number of weeks since the epoch

%tw


Statistical Functions

Function Name

Meaning

Example

invnormal(p)

Inverse cumulative standard normal distribution

1.959964 = invnormal(1-0.05/2)

normal(z)

Cumulative standard normal distribution

.9750021 = normal(1.96)

runiform()

Random number from uniform distribution from 0 to 1

runiform(a,b)

Random number from uniform distribution from a to b

Of relevance to random values: see set rng and set seed.


See also

Stata mathematical functions

Stata datetimes


CategoryRicottone

Stata/NumericFunctions (last edited 2025-03-05 03:59:22 by DominicRicottone)