0
$\begingroup$

I have an expression that consists of a large sum of variables of powers like:

X[1]^(2p) X[2]^2 + X[1]^2 X[2]^(2p) + X1[1]^(1+p) X[2]^(1+p) ...

Now I would like to replace X[k]^p with sigma^p (p-1)!!.

While I can use the list index as a variable I cannot use the exponent as variable. For example, I cannot use

expr /. X[k_]^(l_) -> sigma^l (l-1)!!

Instead I have to list all options manually:

expr /. X[k_]^2 X[l_]^(2p) -> sigma^(2+2p) (2p-1)!! /. X[k_]^(p+1) X[l_]^(p+1) -> sigma^(2+2p) p!! p!!

Why is this and how can I implement this?

$\endgroup$
1
  • $\begingroup$ I assume that the $\sigma^p (p-1)!!$ comes from if the $X[i]$ have independent normal distributions, then the even central moments are $\sigma^p (p-1)!!$ (with the odd central moments being zero). If you are interested in the expectation of expr, then using Expectation[expr, {X[1] \[Distributed] NormalDistribution[\[Mu], \[Sigma]], X[2] \[Distributed] NormalDistribution[\[Mu], \[Sigma]]}] will avoid the necessity of complex substitution rules. $\endgroup$
    – JimB
    Jan 30, 2019 at 0:16

1 Answer 1

2
$\begingroup$

For the truncated example given, both approaches give the same result.

expr = X[1]^(2 p) X[2]^2 + X[1]^2 X[2]^(2 p) + X[1]^(1 + p) X[2]^(1 + p);

rule = X[k_]^(l_) -> sigma^l (l - 1)!!;

expr /. rule

(* sigma^(2 + 2 p) (p!!)^2 + 2 sigma^(2 + 2 p) (-1 + 2 p)!! *)

expr /. X[k_]^2 X[l_]^(2 p) -> sigma^(2 + 2 p) (2 p - 1)!! /. 
 X[k_]^(p + 1) X[l_]^(p + 1) -> sigma^(2 + 2 p) p!! p!!

(* sigma^(2 + 2 p) (p!!)^2 + 2 sigma^(2 + 2 p) (-1 + 2 p)!! *)

% == %%

(* True *)

However, neither approach deals with terms of the form X[1] X[2]^(2p) or X[1]^(2p) X[2]

X[1] X[2]^(2 p) + X[1]^(2 p) X[2] /. rule

(* sigma^(2 p) (-1 + 2 p)!! X[1] + sigma^(2 p) (-1 + 2 p)!! X[2] *)

Presumably, you want to handle this with a revised rule that handles a default power. See Optional and Default Arguments

rule2 = X[k_]^(l_.) -> sigma^l (l - 1)!!;

X[1] X[2]^(2 p) + X[1]^(2 p) X[2] /. rule2

(* 2 sigma^(1 + 2 p) (-1 + 2 p)!! *)
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.