# Resultant probability distribution when taking the cosine of gaussian distributed variable

I am trying to do a measurement uncertainty calculation. I have a gaussian distributed phase angle (theta) with a mean of 0 and standard deviation of 16.6666 micro radians. The variance is the square of the standard. The formula for the measurment uses cos(theta) in the calculation. I need to know the mean, the variance and the distribution function that result from taking the cosine of theta in order to do my calculations correctly.

-
Your angles are small enough that sin(theta) is very close to theta, so you can simplify your analysis by approximating cos(theta) with sqrt(1-theta^2). –  Tracy Hall Aug 11 '10 at 20:12
The other reasonable approximation is $$\cos \theta \approx 1 - \frac{\theta^2}{2}$$ which will definitely give you a mean in closed form. –  Will Jagy Aug 12 '10 at 3:18

I wrote out the first few terms in the power series for $\cos \theta$ and then the first few terms of the series for $\cos^2 \theta .$ I used your hypothesis of normal distribution, the mean of $\theta$ is $\mu = 0$ while the variance is some $\sigma^2 .$

Then I looked up the expected values of $\theta^2, \; \theta^4, \; \theta^6, \; \theta^8$ at http://en.wikipedia.org/wiki/Gaussian_distribution#Moments and used that to find good approximations for your new mean $\mu_1$ and variance $\sigma_1^2$ in $$\mu_1 = E[ \cos \theta ] = 1 - \frac{\sigma^2}{2} + \frac{\sigma^4}{8} - \frac{\sigma^6}{48} + \cdots$$ and $$\mu_1^2 + \sigma_1^2 = E[ \cos^2 \theta ] = 1 - \sigma^2 + \sigma^4 - \frac{2 \sigma^6}{3} + \cdots$$ So when you subtract you get $\sigma_1^2 \approx \frac{\sigma^4}{2}$

I will think about it some more, there is a large theory for calculating moments. But I do not see much to be done in the way of an explicit pdf or cdf.

-

Given a normal distribution with mean $\mu$ and variance $\sigma^2$, $X = \mathcal{N}(\mu,\sigma^2)$, if you pass it through trigonometric functions, you can approximate the result with the new normal distributions below

1) normal distribution passed through Cosine function:

$X_{\cos} = \mathcal{N}(\cos(\mu),\sigma^2\sin^2(\mu))$

so the new average is $\cos(\mu)$ and the new standard deviation is $|\sigma\sin(\mu)|$.

2) normal distribution passed through a Sine function:

$X_{\sin} = \mathcal{N}(\sin(\mu),\sigma^2\cos^2(\mu))$

so the new average is $\sin(\mu)$ and the new standard deviation is $|\sigma\cos(\mu)|$.

The Matlab script that I used to find these relations is below.

%% Cody Martin
% 9/2/2010
% m-file used to discover the mean and variance of a normal distribution
% passed through cosine and sine functions...results:
%   - N(mu,sig^2) -> cos(N(mu,sig^2)) = N(cos(mu),sig^2*sin^2(mu))
%   - N(mu,sig^2) -> sin(N(mu,sig^2)) = N(sin(mu),sig^2*cos^2(mu))

%% distribution of cosine and sine of a normal distribution?
cresults = zeros(0,5);
sresults = zeros(0,5);
% loop from an average angle -90 degrees to +90 degrees
for theta = -pi/2:pi/36:pi/2
theta1sig = pi/36;                          % standard deviation of orinigal normal distribution
vtheta = theta + theta1sig*randn(9999,1);   % create 9999 points using this avg and std
vctheta = cos(vtheta);                      % take the cosine of those points
vstheta = sin(vtheta);                      % take the sine of those points
theta_ = min(vtheta):0.01:max(vtheta);      % for plotting ideal distributions
ctheta_ = min(vctheta):0.01:max(vctheta);   % for plotting
stheta_ = min(vstheta):0.01:max(vstheta);   % for plotting

figure(1); clf;
subplot(211); hold on;
plot(theta_,cdf('normal',theta_,theta,theta1sig),':');  % plot cdf of normal distribution with avg and std
plot(sort(vtheta),[1:length(vtheta)]/length(vtheta));   % plot cdf of 9999 points
plot(sort(vctheta),[1:length(vctheta)]/length(vctheta),'k','LineWidth',2); % plot cdf of cos(9999 points)
plot(ctheta_,cdf('normal',ctheta_,cos(theta),...        % plot cdf of norm dist with new avg and std after being passed through cos()
sqrt(theta1sig^2*sin(theta)^2)),'r:');
plot(cos(theta)*[1 1],[0 1],'k:');                      % vertical line @ cos(theta) - shows new average matches cos(old avg)
title('Cosine of a Normal Distribution (for Different Initial Averages)');
legend('Norm CDF Theory','Norm CDF 9999','Cos(Norm CDF 9999)','Cos(Norm CDF) Theory');
axis([-pi/2 pi/2 0 1])

subplot(212); hold on;
plot(theta_,cdf('normal',theta_,theta,theta1sig),':');
plot(sort(vtheta),[1:length(vtheta)]/length(vtheta));
plot(sort(vstheta),[1:length(vstheta)]/length(vstheta),'k','LineWidth',2);
plot(stheta_,cdf('normal',stheta_,sin(theta),...
sqrt(theta1sig^2*cos(theta)^2)),'r:');
plot(sin(theta)*[1 1],[0 1],'k:');
title('Sine of a Normal Distribution (for Different Initial Averages)');
legend('Norm CDF Theory','Norm CDF 9999','Sin(Norm CDF 9999)','Sin(Norm CDF) Theory');
axis([-pi/2 pi/2 0 1])

%   fprintf('theta: %3.0f\tstd: %5.3f\tsin(theta): %5.3f\tavg: %5.3f\tstd: %5.3f\n',theta*180/pi,theta1sig,sin(theta),mean(vstheta),std(vstheta));
cresults = [cresults; theta theta1sig cos(theta) mean(vctheta) std(vctheta)];
sresults = [sresults; theta theta1sig sin(theta) mean(vstheta) std(vstheta)];
end

figure(2); clf;
subplot(211); hold on;
plot(cresults(:,1),cresults(:,end));
plot(cresults(:,1),abs(theta1sig*sresults(:,3)),'r:');
title('Standard Deviation of Cosine of a Normal Distribution as a Function of the Original Average');
legend('From 9999 Points','Fit: std = |\sigmasin(\mu)|');

subplot(212); hold on;
plot(sresults(:,1),sresults(:,end));
plot(sresults(:,1),abs(theta1sig*cresults(:,3)),'r:');
title('Standard Deviation of Sine of a Normal Distribution as a Function of the Original Average');
legend('From 9999 Points','Fit: std = |\sigmacos(\mu)|');

-
Cody, is it wright what you say? Sigma is varying with the mean? If I measure an angle of 90 degrees, then $N_{\cos}(0,{\sigma}^2)$ and $N_{\sin}(1,0)$? And if I measure an angle of 0 degrees, then $N_{\cos}(1,0)$ and $N_{\sin}(0,{\sigma}^2)$ ? Where do I find the theory of that? –  user24033 May 28 '12 at 14:21
Cody, I'm afraid your answer is incomplete. The problem I see lays with the variance. If $X \sim N(\mu,\sigma^2)$ indeed results with $cos(X) \sim N(cos(\mu), \sigma^2 sin^2(\mu))$ then for, e.g., $\mu = \frac{\pi}{2}$ the approximation is $N(1,0)$ regardless of $\sigma$. This seems to be a poor approximation because an increase in the variance of $X$ should always result in an increase of the variance of $cos (X)$. –  user33615 May 2 '13 at 5:04

Hi, I know this was asked a long time ago but I have just discovered it because I require a similar solution. It is possible to generate an expression, albeit as an infinite summation. For practical purposes, the first few terms of the summation should suffice.

Let $X$ denote a random variable with pdf $f_X(x)$. Let $Y=g(X)$ be a function of $X$. We can specify the cdf of $Y$, denoted $F_Y(y)$ as follows:

$F_Y(y)=\mathbb{P}(g(X)\leq y)=\int\limits_{\Omega}f_X(x)\text{d}x$,

where the domain of integration $\Omega$ is defined as

$\Omega=\left\lbrace x:g(x)\leq y \right\rbrace$

In our case, $g(x)=\cos x$, so we need an expression for the domain of $x\in\mathbb{R}$ such that $\cos x\leq y$. This is given by

$2k\pi+\arccos(y) \leq x < 2(k+1)\pi-\arccos(y)\, k\in\mathbb{Z}$

So integrating over this domain, we obtain

$F_Y(y)=\sum\limits_{k=\infty}^{\infty} \int\limits_{2k\pi+\arccos(y)}^{2(k+1)\pi-\arccos(y)} f_X(x)\text{d}x$

Now in our case $X\sim\mathcal{N}(0,\sigma)$, so

$f_X(x)=\dfrac{1}{\sigma\sqrt{2\pi}}\exp\left(\dfrac{-x^2}{2\sigma^2}\right)$

and the integral of this pdf between limits is given by the cdf of the normal distribution, which we denote $\Phi$:

$\int\limits_{a}^{b}f_X(x)\text{d}x = \Phi(b/\sigma)-\Phi(a/\sigma)$

The cdf of $Y$ is therefore

$F_Y(y)=\sum\limits_{k=-\infty}^{\infty} \Phi\left(\dfrac{2(k+1)\pi-\arccos(y)}{\sigma}\right) - \Phi\left(\dfrac{2k\pi-\arccos(y)}{\sigma}\right)$

To compute the pdf, take the derivative with respect to $y$:

$f_Y(y)=\dfrac{dF_Y(y)}{dy} = \sum\limits_{k=-\infty}^{\infty} \dfrac{1}{\sqrt{1-y^2}}\left( f_{X}(2(k+1)\pi-\arccos(y) ) + f_{X}(2k\pi+\arccos(y)) \right)$

There are probably better ways to do this. It's possible the final summation can be rewritten or simplified. But this seems to match with a numerical check.

-
Think it should be $$F_Y(y) = \sum_{k=-\infty}^\infty \Phi\left( \frac{2(k+1) \pi - \arccos(y)}{\sigma} \right) - \Phi\left( \frac{2k\pi + \arccos(y)}{\sigma} \right)$$, no? (Note the addition instead of subtraction in the second $\Phi$ argument.) This makes the pdf $$f_Y(y)=\dfrac{dF_Y(y)}{dy} = \sum\limits_{k=-\infty}^{\infty} \dfrac{1}{\sqrt{1-y^2}}\left( f_{X}(2(k+1)\pi-\arccos(y) ) - f_{X}(2k\pi+\arccos(y)) \right)$$. –  Dougal Jan 24 at 22:47

A quick way to find the mean of $\cos(\theta)$, where $\theta\sim \mathcal{N}(0, \sigma^2)$, is through calculating the mean of a complex variable $e^{j\theta}=\cos(\theta)+j\sin(\theta)$. We have

$E [e^{j\theta}]=e^{0+(j\sigma)^2/2}=e^{-\sigma^2/2}$

which implies that the mean of the imaginary part $E [\sin(\theta)]$ equals zero and the mean of the real part $E[\cos(\theta)]$ equals $e^{-\sigma^2/2}$.

The answer $\mu_1$ derived by Will Jagy is in fact the Taylor series expansion of $e^{-\sigma^2/2}$.

The variance of $\cos(\theta)$ can be obtained as:

$E[\cos^2(\theta)]-E[\cos(\theta)]^2= E[\frac{1}{2}+\frac{\cos(2\theta)}{2}]- E[\cos(\theta)]^2= \frac{1}{2}[1-e^{-\sigma^2}]^2$

-
If anyone else is looking for this: I used this to work out the mean and variance of $\cos x$ and $\sin x$ where $x \sim \mathcal{N}(\mu, \sigma^2)$ at this link. Nothing complicated, just a bunch of trig identities that I haven't remembered since tenth grade. –  Dougal Jan 20 at 5:19