I am trying to find the area under the common portion of two different normal distribution curve. How can I do that using JMP? Any simple way to do so?
In JMP 12 there is an quite efficient Integrate() function that can be used for calculating the area confined by the minimum of the two curves.
The example below is not very useful (you'd probably want to get the parameters from the distribution platform) but may give you some ideas...
Names Default To Here(1); // Define curves and calculate overlap area N1 = Expr(Normal Density(x, 1, 2)); N2 = Expr(Normal Density(x, 0, 1)); ovl = Integrate(Min(N1, N2), x, ., .); Show(ovl); //–––––––––– // Illustration ym = xm = (-500 :: 500) / 100; For(i = 1, i <= N Col(xm), i++, ym[i] = Min(Normal Density(xm[i], 1, 2), Normal Density(xm[i], 0, 1)) ); New Window("Overlap Coefficient", y = Graph Box( Y Scale(0, 1), X Scale(-5, 5), Y Function(N1, x); Y Function(N2, x); Text({0, 0.6}, "OVL = ", ovl); Fill Color(1); Polygon(xm, ym); ) );
@ms Thanks for sharing this! I checked this script against an example given on the following website thanks to a colleague of mine: https://stats.stackexchange.com/questions/103800/calculate-probability-area-under-the-overlapping-area-of-two-normal-distributi
With the mean and sigma parameters for the first and second distributions respectively:
"For your example, with μ1=5.28,μ2=8.45,σ1=0.91,σ2=1.36μ1=5.28,μ2=8.45,σ1=0.91,σ2=1.36, this yields: c=6.70458...c=6.70458..., and the area of the green section is: 0.158413"
The .JSL script gives the exact same result for the area of the overlapped section!
Names Default To Here(1); // Define curves and calculate overlap area mean1 = 5.28; stdev1 = 0.91; mean2 = 8.45; stdev2 = 1.36; N1 = Expr(Normal Density(x, mean1, stdev1)); N2 = Expr(Normal Density(x, mean2, stdev2)); ovl = Integrate(Min(N1, N2), x, ., .); Show(ovl); //–––––––––– // Illustration ym = xm = (-1000 :: 1000) / 100; For(i = 1, i <= N Col(xm), i++, ym[i] = Min(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2)) ); New Window("Overlap Coefficient", y = Graph Box( Y Scale(0, 1), X Scale(-5, 12), Y Function(N1, x); Y Function(N2, x); Text({0, 0.6}, "OVL% = ", ovl*100); Fill Color(1); Polygon(xm, ym); ) );
The graph from JMP (thanks @ms) . Nice to know there is also an analytical solution.
overlap
Can anyone help problem solve this script. My JSL is simply not good enough to understand what is going wrong when we use a real data set and the chart scales incorrectly and doesn't display / calculate OVL?example data:
Errors observed