gaussian random matrix transforms vectors into gaussian random vectors

[[concept]]

[!themes] Topics

Evaluation Error: SyntaxError: Unexpected token '>'

at DataviewInlineApi.eval (plugin:dataview:19027:21)
at evalInContext (plugin:dataview:19028:7)
at asyncEvalInContext (plugin:dataview:19038:32)
at DataviewJSRenderer.render (plugin:dataview:19064:19)
at DataviewJSRenderer.onload (plugin:dataview:18606:14)
at DataviewJSRenderer.load (app://obsidian.md/app.js:1:1182416)
at DataviewApi.executeJs (plugin:dataview:19607:18)
at DataviewCompiler.eval (plugin:digitalgarden:10763:23)
at Generator.next (<anonymous>)
at eval (plugin:digitalgarden:90:61)

Proposition

Let GN(0,1)d×m be a random matrix and yRm. Then

\text{Law}(Gy) = {\cal N}(0, \lvert \lvert y \rvert \rvert { #2} I_{d})

^statement

Proof

Gy is linear in G. The entries of G form a gaussian random vector, and so Gy must be Gaussian as well. Thus, it suffices to calculate the mean and covariance to find its law.

Since each entry of G, call them Giα, is iid N(0,1), we get

E(Gy)i=E[α=1mGiαyα]=0

And for the variance

\begin{align} \text{Cov}(\,(Gy)_{i}, (Gy)_{j}\,) &= \mathbb{E}[\,(Gy)_{i}(Gy)_{j}\,] \\ &= \mathbb{E}\left( \left( \sum_{\alpha=1}^m G_{i\alpha} y_{\alpha} \right) \left( \sum_{\beta=1}^m G_{j\beta}y_{\beta} \right) \right) \\ &= \sum_{\alpha,\beta=1}^m y_{\alpha}y_{\beta} \cdot \mathbb{E} [G_{i\alpha} G_{j\beta}] \\ &= \begin{cases} 0 & i \neq j \\ \lvert \lvert y \rvert \rvert { #2} & i=j \end{cases} \\ \implies \text{Cov}(Gy,Gy) &= \lvert \lvert y \rvert \rvert { #2} I_{d} \end{align}

^proof-0

Above, we found the expectation and covariance in terms of the entry-wise products and sums. We can also do the calculation in terms of matrices.

Proof (matrices)

Expectation
If there is only one random matrix involved, we can write

E[Gy]=E[G]y(=0)()

_() In terms of our same setting above. This is a simple result of linearity of expectation.

Covariance
If g1,,gmRd are the columns of G so that each gαN(0,Id) iid, then we see that

\begin{align} \text{Cov}(Gy) &= \mathbb{E}\left[ (Gy)(Gy)^{\intercal} \right] \\ &= \mathbb{E}\left[ \left( \sum_{\alpha=1}^m y_{\alpha} g_{\alpha} \right)\left( \sum_{\beta=1}^m y_{\beta} g_{\beta}^{\intercal} \right) \right] \\ &= \sum_{\alpha,\beta=1}^m y_{\alpha} y_{\beta} \cdot \mathbb{E}\left[ g_{\alpha}g_{\beta}^{\intercal} \right] \\ (*) &= \sum_{\alpha=1}^m y_{\alpha}^2 \cdot I_{d} \\ &= \lvert \lvert y \rvert \rvert { #2} I_{d} \end{align}

Where again () is in terms of the setting above. In this line we use the law of the gα.

References

References

See Also

Mentions

Mentions

const modules = await cJS()

const COLUMNS = [  
	{ id: "Name", value: page => page.$link },  
	{ id: "Last Modified", value: page => modules.dateTime.getLastMod(page) },
];  
  
return function View() {  
	const current = dc.useCurrentFile();
// Selecting `#game` pages, for example. 
	let queryString = `@page and linksto(${current.$link})`;
	let pages = dc.useQuery(queryString);
	
	// check types
	pages = pages.filter( (p) => !modules.typeCheck.checkAll(p, current) ).sort()
	
	
	return <dc.Table columns={COLUMNS} rows={pages} paging={20}/>;  
}  

const { dateTime } = await cJS()

return function View() {
	const file = dc.useCurrentFile();
	return <p class="dv-modified">Created {dateTime.getCreated(file)}     ֍     Last Modified {dateTime.getLastMod(file)}</p>
}