Differences between revisions 6 and 14 (spanning 8 versions)
Revision 6 as of 2023-06-13 21:03:44
Size: 1738
Comment:
Revision 14 as of 2025-03-05 03:59:22
Size: 5002
Comment: Fixed link
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
== Dhms == == General Purpose ==
Line 13: Line 13:
See also `Cdhms`. ||'''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 19: Line 43:
== Dmy ==
== Date and Time Functions ==

These functions return [[Stata/DataFormats#Date_and_Datetime_Formats|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` ||
Line 25: Line 67:
== Hms == == Statistical Functions ==
Line 27: Line 69:
See also `Chms`. ||'''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 [[Stata/Set#Rng|set rng]] and [[Stata/Set#Seed|set seed]].
Line 33: Line 81:
== Mdy == == See also ==
Line 35: Line 83:
---- [[https://www.stata.com/manuals/fnmathematicalfunctions.pdf|Stata mathematical functions]]
Line 37: Line 85:


== Mdyhms ==

See also `Cmdyhms`.

----



== Y ==

----



== Yh ==

----



== Ym ==

----



== Yq ==

----



== Yw ==

----



== Random Number Functions ==

=== 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 [[SurveySamples#Sampling_Methods|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 [[Stata/DataTypes|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`'''.



=== Set Rng ===

To use an alternate random number generation algorithm, set the rng value to something other than `default`.

{{{
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`.



=== Set Seed ===

To make random number generation reproducible, set a seed value.

{{{
set seed 42
}}}

A seed value must be an integer, non-negative, and no greater than 2^31^ − 1.
[[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)