1

2

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.

flag
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 2010 at 20:12
2 
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 2010 at 3:18

6 Answers

5

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.

link|flag
3

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}$.

link|flag
0

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)$.

link|flag
1

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.

link|flag
0

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?

link|flag
1

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)|');
ylabel('std(cos(\theta_{vector})) [rad]');
xlabel('\theta [rad]');

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)|');
ylabel('std(sin(\theta_{vector})) [rad]');
xlabel('\theta [rad]');
link|flag

Your Answer

Get an OpenID
or

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