有没有办法使用 JMP 找到两条不同正态分布曲线的公共面积?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我试图找到两条不同正态分布曲线的公共部分下的面积。 我如何使用 JMP 来做到这一点? 有什么简单的方法可以做到这一点吗?
回复:有没有办法使用 JMP 找到两条不同正态分布曲线的公共面积?你好,
图表范围被硬编码为单位数而不是两位数,因此可以说该图是“脱离页面的”。 我添加了代码来计算图表的适当轴,以便显示曲线。
我在使用这里使用的 Integrate() 函数时也遇到了麻烦,并解决了多边形下的黎曼和。 这样就相当准确了。
Names Default to Here( 1 );
// Define curves and calculate overlap area
mean1 = 46.17;
stdev1 = 16.27;
mean2 = 82.08;
stdev2 = 17.68;
<BR />N1 = Expr(Normal Density(x, mean1, stdev1));<BR />N2 = Expr(Normal Density(x, mean2, stdev2));
//––––––––––
// calculate graph ranges
rangemin = Minimum(mean1-6*stdev1,mean2-6*stdev2);
rangemax = Maximum(mean1+6*stdev1,mean2+6*stdev2);
// Illustration
ym = zm = 1 :: 2000; // 2000 has to do with how detailed the plot should be
multiplier = (rangemax-rangemin)/(Maximum(ym)-Minimum(ym));
xm = (ym-Minimum(ym))*multiplier+rangemin;
ovl = 0;
For(i = 1, i <= N Col(xm), i++,
ym[i] = Minimum(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2));
zm[i] = Maximum(Normal Density(xm[i], mean1, stdev1), Normal Density(xm[i], mean2, stdev2));
If(i>1, ovl += 0.5*(ym[i-1]+ym[i])*(xm[i]-xm[i-1]));
);
New Window("Overlap Coefficient",
y = Graph Box(
Y Scale(0, 1.2*Maximum(zm)),
X Scale(rangemin, rangemax),
Y Function(N1, x);
Y Function(N2, x);
Text({Mean(xm), 0.6*Maximum(zm)}, "OVL% = ", ovl*100);
Fill Color(1);
Polygon(xm, ym);
)
);回复:有没有办法使用 JMP 找到两条不同正态分布曲线的公共面积?任何人都可以帮助解决这个脚本的问题。 当我们使用真实数据集并且图表比例不正确并且不显示/计算 OVL 时,我的 JSL 根本不足以理解出了什么问题?
示例数据:
| 平均值1 = 46.17 | 标准差1 = 16.27 |
| 平均值2 = 82.08 | 标准差2 = 17.68 |
观察到的错误
- 使用上述数据 OVL 不会显示/计算(我不确定哪个是真的)
- 轴设置为错误的比例(自动功能会有所帮助)
- 当在代码中或使用手动工具调整比例时,我们会看到 PDF 曲线,但看不到阴影区域
回复:有没有办法使用 JMP 找到两条不同正态分布曲线的公共面积?JMP 的图表(感谢@多发性硬化症)。 很高兴知道还有一个解析解。
overlapoverlap重叠
回复:有没有办法使用 JMP 找到两条不同正态分布曲线的公共面积?@多发性硬化症感谢您分享这个!感谢我的一位同事,我根据以下网站上给出的示例检查了此脚本: https://stats.stackexchange.com/questions/103800/calculate-probability-area-under-the-overlapping-area-of-two-normal-distributi
分别使用第一和第二分布的均值和西格玛参数:
“对于你的例子来说, μ 1 = 5.28 , μ 2 = 8.45 , σ 1 = 0.91 , σ 2 = 1.36 μ1=5.28,μ2=8.45,σ1=0.91,σ2=1.36 ,这产生: C = 6.70458... c=6.70458... ,绿色部分面积为:0.158413"
.JSL 脚本对于重叠部分的区域给出了完全相同的结果!
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);
)
);

回复:有没有办法使用 JMP 找到两条不同正态分布曲线的公共面积?JMP 12 中有一个非常高效的 Integrate() 函数,可用于计算两条曲线中最小值所限制的面积。
下面的示例不是很有用(您可能想从分发平台获取参数),但可能会给您一些想法......
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);
)
);
