       Re: Creating a Listable Function

• To: mathgroup at smc.vnet.net
• Subject: [mg73596] Re: Creating a Listable Function
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Thu, 22 Feb 2007 04:44:00 -0500 (EST)
• Organization: The Open University, Milton Keynes, UK
• References: <ergqjm\$j0v\$1@smc.vnet.net>

```Gregory Lypny wrote:
> Hello everyone,
>
> I've created a function for population variance, which does not make
> use of Mathematica's built-in Variance function.
>
> VarPop[x_] := Total[(x - Mean@x)^2]/Length@x
>
> How do I need to change the definition to have the function operate
> across lists much like Total, Mean, and Variance do?
>
> Regards,
>
> 	Greg
>
Hi Gregory,

Assuming I have correctly understood what behavior of Total you are
referring to, the following version of VarPop (see In) should do what
you are looking for.
In:=
data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
Total[data]
Total[data, 2]

Out=
{12, 15, 18}

Out=
45

In:=
Clear[VarPop];
VarPop[x_, n_Integer:1] /; n < Depth[x] :=
Nest[Total[(#1 - Mean[#1])^2]/Length[#1] & , x, n]

In:=
VarPop[data]

Out=
11  8  11
{--, -, --}
3   3  3

In:=
VarPop[data, 2]

Out=
2
-
9

The expression /Depth[data] - 1/ simulates the value Infinity that can
be given as second argument to Total.

In:=
VarPop[data, ]

Out=
2
-
9

(Note that, though there are some tests on the arguments, the function
is not bullet proof: you will have to handle cases such as negative n, say).

Regards,
Jean-Marc

```

• Prev by Date: NonLinearRegression Weights
• Next by Date: Re: Limit of Error function Erf
• Previous by thread: Re: Creating a Listable Function
• Next by thread: Re: Creating a Listable Function