Function Repository Resource:

PowerMean

Source Notebook

Compute the mean of a list of numbers all taken to some power

Contributed by: Seth J. Chandler

ResourceFunction["PowerMean"][y,n,x]

takes x to the yth power, then applies the Total function using level specification n, and divides the result by the Length of x.

ResourceFunction["PowerMean"][y,n]

represents an operator form of ResourceFunction["PowerMean"] that can be applied to x.

ResourceFunction["PowerMean"][y]

represents an operator form of ResourceFunction["PowerMean"] that, when applied to x, computes the mean at the top level.

ResourceFunction["PowerMean"][]

represents an operator form of ResourceFunction["PowerMean"] that, when applied to x, takes the mean of the squares.

Details and Options

Both x and y can be real, complex or symbolic.
The level specification n may take the form of:
an integer n, meaning the summation is performed at all levels down to level n;
an integer n wrapped with List, meaning the summation is performed at level n only; and
a List of two integers {n1,n2} meaning the summation is performed at all levels n1 through n2.
See the documentation for Total for a more complete explanation of how the level specification works there.

Examples

Basic Examples (4) 

Compute the mean of the squares of a list:

In[1]:=
ResourceFunction["PowerMean"][][{3, 4}]
Out[1]=

Compute the sum of the cubes of a list with symbolic parts:

In[2]:=
ResourceFunction["PowerMean"][3][{a, b, c}]
Out[2]=

Compute the mean of the cubes of a symbolic array:

In[3]:=
ResourceFunction["PowerMean"][3, 2][Array[x, {5, 2}]]
Out[3]=

Create an operator that when confronted with an expression computes the mean of its square roots:

In[4]:=
ResourceFunction["PowerMean"][1/2][{3, 4}]
Out[4]=

Scope (2) 

The power may be complex, as may the list:

In[5]:=
ResourceFunction["PowerMean"][2 + I][{3 + I, 4.2 - I}]
Out[5]=

The level specification can affect the results when the data has more than one dimension:

In[6]:=
t = Array[Subscript[a, ##] &, {2, 3, 4}]
Out[6]=

The default is to apply at level 1:

In[7]:=
ResourceFunction["PowerMean"][2][t]
Out[7]=

Apply the mean down to level 2:

In[8]:=
ResourceFunction["PowerMean"][2, 2][t]
Out[8]=

Apply the mean in the last two dimensions:

In[9]:=
ResourceFunction["PowerMean"][2, {-2, -1}][t]
Out[9]=

Applications (3) 

Use PowerMean to conduct ordinary least squares linear regression by finding the values of two parameters a and b that minimize the mean of the squared distances between the actual value of the independent variable and a value that depends on a and b:

In[10]:=
Minimize[ResourceFunction["PowerMean"][2][
  Map[5 # - 6 &][{3, 4, 5}] - Map[a *# + b &][{3, 4, 5}]], {a, b}]
Out[10]=

Use PowerMean to perform "Tikhonov" (ridge) regression:

In[11]:=
Quiet@Minimize[{ResourceFunction["PowerMean"][2][
     Map[5 # - 6 &][{3, 4, 5}] - Map[a *# + b &][{3, 4, 5}]], ResourceFunction["PowerMean"][2][{a, b}] < 29}, {a, b}] // N
Out[11]=

Use PowerMean to perform "LASSO" regression:

In[12]:=
Quiet@Minimize[{ResourceFunction["PowerMean"][2][
     Map[5 # - 6 &][{3, 4, 5}] - Map[a *# + b &][{3, 4, 5}]], ResourceFunction["PowerMean"][1][Abs@{a, b}] < 5}, {a, b}] // N
Out[12]=

Properties and Relations (1) 

PowerMean[] is the same as the mean square of the results from the Norm function if the arguments it confronts are real-valued, but is not necessarily the same if the values it confronts are complex:

In[13]:=
ResourceFunction["PowerMean"][][{3, 4, 5}] == Norm[{3, 4, 5}]^2/3
Out[13]=
In[14]:=
ResourceFunction["PowerMean"][][{3 + I, 4 - I, 5 + I}] == Norm[{3 + I, 4 - I, 5 + I}]^2/3
Out[14]=

Publisher

Seth J. Chandler

Version History

  • 1.0.0 – 30 December 2019

Related Resources

License Information