{smcl} {* 07jul2020}{...} {cmd:help mata mm_diff()} {hline} {title:Title} {p 4 4 2} {bf:mm_diff() -- Lagged differences} {title:Syntax} {p 8 12 2} {it:numeric vector} {cmd:mm_diff(}{it:x} [{cmd:,} {it:lag}]{cmd:)} {p 8 12 2} {it:numeric matrix} {cmd:mm_rowdiff(}{it:X} [{cmd:,} {it:lag}]{cmd:)} {p 8 12 2} {it:numeric matrix} {cmd:mm_coldiff(}{it:X} [{cmd:,} {it:lag}]{cmd:)} {p 4 8 2} where {it:x}: {it:numeric vector x} {it:X}: {it:numeric matrix X} {it:lag}: {it:real scalar lag} {title:Description} {p 4 4 2} {cmd:mm_diff()} computes successive lagged differences of the values in vector {it:x}. {p 4 4 2} {cmd:mm_rowdiff()} computes successive lagged differences within rows of matrix {it:X}. {p 4 4 2} {cmd:mm_coldiff()} computes successive lagged differences within columns of matrix of {it:X}. {p 4 4 2} Optional argument {it:lag} specifies the lag to be used. The default is {it:lag} = 1. {title:Examples} {com}: x = (1,2,9,4,-10) {res} {com}: x {res} {txt} 1 2 3 4 5 {c TLC}{hline 31}{c TRC} 1 {c |} {res} 1 2 9 4 -10{txt} {c |} {c BLC}{hline 31}{c BRC} {com}: mm_diff(x) {res} {txt} 1 2 3 4 {c TLC}{hline 25}{c TRC} 1 {c |} {res} 1 7 -5 -14{txt} {c |} {c BLC}{hline 25}{c BRC} {com}: mm_diff(x,2) {res} {txt} 1 2 3 {c TLC}{hline 19}{c TRC} 1 {c |} {res} 8 2 -19{txt} {c |} {c BLC}{hline 19}{c BRC} {com}: mm_diff(x,3) {res} {txt} 1 2 {c TLC}{hline 13}{c TRC} 1 {c |} {res} 3 -12{txt} {c |} {c BLC}{hline 13}{c BRC} {com}: mm_diff(x,4) {res} -11 {com}: X = (1,2) \ (5,10) \ (11,15) {res} {com}: X {res} {txt} 1 2 {c TLC}{hline 11}{c TRC} 1 {c |} {res} 1 2{txt} {c |} 2 {c |} {res} 5 10{txt} {c |} 3 {c |} {res}11 15{txt} {c |} {c BLC}{hline 11}{c BRC} {com}: mm_coldiff(X) {res} {txt}1 2 {c TLC}{hline 9}{c TRC} 1 {c |} {res}4 8{txt} {c |} 2 {c |} {res}6 5{txt} {c |} {c BLC}{hline 9}{c BRC} {com}: mm_rowdiff(X) {res} {txt}1 {c TLC}{hline 5}{c TRC} 1 {c |} {res}1{txt} {c |} 2 {c |} {res}5{txt} {c |} 3 {c |} {res}4{txt} {c |} {c BLC}{hline 5}{c BRC}{txt} {title:Conformability} {cmd:mm_diff(}{it:x}{cmd:,} {it:lag}{cmd:)} {it:x}: {it:n x} 1 or 1 {it:x n} {it:lag}: 1 {it:x} 1 {it:result}: max({it:n}-{it:lag},0) {it:x} 1 or 1 {it:x} max({it:n}-{it:lag},0) {cmd:mm_rowdiff(}{it:X}{cmd:,} {it:lag}{cmd:)} {it:X}: {it:r x c} {it:lag}: 1 {it:x} 1 {it:result}: {it:r x} max({it:c}-{it:lag},0) {cmd:mm_coldiff(}{it:X}{cmd:,} {it:lag}{cmd:)} {it:X}: {it:r x c} {it:lag}: 1 {it:x} 1 {it:result}: max({it:r}-{it:lag},0) {it:x c} {title:Diagnostics} {p 4 4 2} Non-integer {it:lag} will be treated as {cmd:trunc(}{it:lag}{cmd:)}. {p 4 4 2} Negative {it:lag} will be treated as {cmd:abs(}{it:lag}{cmd:)}. {p 4 4 2} Missing {it:lag} will be treated as {it:lag} = 1. {title:Source code} {p 4 4 2} {help moremata_source##mm_diff:mm_diff.mata} {title:Author} {p 4 4 2} Ben Jann, University of Bern, ben.jann@soz.unibe.ch {title:Also see} {p 4 13 2} Online: help for {bf:{help m4_utility:[M-4] utility}}, {bf:{help moremata}}