# Density

The density transform (`density`

) finds the density of a probability distribution at a particular point. This transform is a specialized form of the
`disintegrate`

transform that also computes the expectation of the probabilistic
distribution as part of its work.

## Usage

Your Hakaru program must be a probability distribution (type `measure(x)`

) in order to use the `density`

transform. Most Hakaru programs that end
with a `return`

statement do not meet this requirement because they return values instead of functions on values.

You can use the `density`

transform in the command line by calling:

```
density hakaru_program.hk
```

This transformation will produce a new Hakaru program containing an anonymous function representing the density function for that model.

## Example

The normal distribution is a commonly used distribution in probabilistic modeling. A simple Hakaru program modelling the simplest normal distribution is:

```
normal(0,1)
```

Assuming that this program is named `norm.hk`

, we can calculate the density function for this distribution by running:

```
density norm.hk
```

**Note:** The output for `density`

will be printed in the console. You can easily save this program to a file by redirecting the output to a file by calling
`density model1.hk > model2.hk`

. For this example, we will call our new program `norm_density.hk`

.

When you open the new Hakaru program, `norm_density.hk`

, you will find an anonymous Hakaru function. You can then assign values to the function’s arguments to test the
probabilistic density at a specific point in the model.

```
fn x0 real:
(exp((negate(((x0 + 0) ^ 2)) / 2)) / 1 / sqrt((2 * pi)) / 1)
```

For example, if you wanted to test the density at `0.2`

, you could alter `norm_density.hk`

to:

```
normalDensity = fn x0 real:
(exp((negate(((x0 + 0) ^ 2)) / 2)) / 1 / sqrt((2 * pi)) / 1)
return normalDensity(0.2)
```

You could then use the `hakaru`

command to have Hakaru compute the density:

```
$ hakaru norm_density.hk | head -n 1
0.3910426939754559
```

**Note:** If the argument `head -n 1`

is omitted, the `hakaru`

command will print out the resulting density value indefinitely.