-
Notifications
You must be signed in to change notification settings - Fork 6
/
ArcsinTrans.m
46 lines (36 loc) · 1.58 KB
/
ArcsinTrans.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
classdef ArcsinTrans < dTransMono
% ArcsinTrans(BasisRV): Arcsin(sqrt( Standard_Normal.CDF(BasisRV/2) ))
% This transformation is used with frequency data (e.g. binomial proportions)
% in order to obtain more normally distributed values. For example,
% suppose some p's have the skewed distribution b1=Beta(21,2), with RawSkewness = -0.06
% The distribution ArcsinTrans(b1) is less skewed, RawSkewness = -0.012
% (though RelSkewness is actually slightly larger: -1.149 vs -1.166).
properties(SetAccess = protected)
Standard_Normal
end
methods
function obj=ArcsinTrans(BasisDist)
obj=obj@dTransMono('ArcsinTrans',BasisDist);
obj.Standard_Normal = Normal(0,1);
obj.TransReverses = false;
obj.PDFScaleFactorKnown = false;
obj.ReInit;
end
function []=ResetParms(obj,newparmvalues)
ResetParms@dTransMono(obj,newparmvalues);
ReInit(obj);
end
function Trans = PreTransToTrans(obj,PreTrans)
% The "arcsin transformation" of a random variable.
NCDF = obj.Standard_Normal.CDF(PreTrans/2);
NCDF = sqrt(NCDF);
Trans = asin(NCDF);
end
function PreTrans = TransToPreTrans(obj,Trans)
% The "inverse arcsin transformation" of a random variable.
Temp = sin(Trans);
Temp = Temp.^2;
PreTrans = 2*obj.Standard_Normal.InverseCDF(Temp);
end
end % methods
end % class ArcsinTrans