Differences between revisions 1 and 13 (spanning 12 versions)
Revision 1 as of 2022-03-16 15:40:42
Size: 1202
Comment:
Revision 13 as of 2025-03-05 03:58:27
Size: 4992
Comment: Fixed link
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()
}}}

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 26: Line 43:
=== Set Rng ===
Line 28: Line 44:
To use an alternate random number generation algorithm, set the rng value to something other than `default`. == Date and Time Functions ==
Line 30: Line 46:
{{{
set rng default
}}}
These functions return [[Stata/DataFormats#Date_and_Datetime_Formats|date and datetime formatted values]].
Line 34: 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 datetime from a year, month, day, hour, minute, and second ||`%tc` ||
||`Cmdyhms(m,d,y,h,m,s)`||Calculate a datetime 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 36: 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 44: Line 67:
=== Set Seed === == Statistical Functions ==
Line 46: 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 48: Line 75:
{{{
set seed 42
}}}
Of relevance to random values: see [[Stata/Set#Rng|set rng]] and [[Stata/Set#Seed|set seed]].
Line 52: Line 77:
A seed value must be an integer, non-negative, and no greater than 2^31^ − 1. ----
Line 54: 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)

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 functions return date and datetime formatted values.

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 datetime from a year, month, day, hour, minute, and second

%tc

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

Calculate a datetime 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)