sas数据分析案例:圆的两个随机和弦相交的概率

概率论中存在一些涉及线段交叉的有趣问题。一个是“两个随机选择的圆的和弦相交的概率是多少?” 本文介绍如何在SAS中创建模拟以估计概率。

一个确切的答案

对于这个问题,“随机和弦”被定义为连接在圆上随机选择的两个点(具有均匀概率)的线段。可以通过使用简单的计数参数来导出两个随机和弦相交的概率。假设您在圆圈上随机选取四个点。根据极角将点标记为p1,p2,p3和p4。如下图所示,点以下列三种方式之一排列在圆上。因此,两个随机和弦相交的概率是1/3,因为和弦仅在三种可能的布置中的一种中相交。


SAS中的模拟

您可以创建模拟来估计两个随机和弦相交的概率。可以使用我文章中关于线段交叉的两个SAS / IML模块中的任何一个来检测两个段的交集。以下模拟生成在区间(0,2π)中随机均匀选择的四个角度。它将这些点转换为单位圆上的(x,y)坐标。然后计算前两个点之间的和弦是否与第三个和第四个点之间的和弦相交。它重复此过程100,000次并报告和弦相交的次数。

proc iml;/* Find the intersection between 2D line segments [p1,p2] and [q1,q2].

  This function assumes that the line segments have different slopes (A is nonsingular) */start IntersectSegsSimple(p1, p2, q1, q2);  b = colvec(q1 - p1);    A = colvec(p2-p1)|| colvec(q1-q2);/* nonsingular when segments have different slopes */x= solve(A, b);/* x = (s,t) */ifall(0<=x&& x<=1)then/* if x is in [0,1] x [0,1] */return(1-x[1])*p1 + x[1]*p2;/* return intersection */else/* otherwise, segments do not intersect */return({. .});/* return missing values */finish;/* Generate two random chords on the unit circle.

  Simulate the probability that they intersect  */N= 1e5;theta = j(N,4);callrandseed(123456);callrandgen(theta,"uniform",0,2*constant('pi'));intersect = j(N,1,0);doi =1toN;  t = theta[i,]`;/* 4 random U(0, 2*pi) */pts =cos(t)||sin(t);/* 4 pts on unit circle */p1 = pts[1,];    p2 = pts[2,];  q1 = pts[3,];    q2 = pts[4,];  intersect[i]= all(IntersectSegsSimple(p1, p2, q1, q2)^= .);end; prob =mean(intersect);print prob;



该模拟产生的估计值接近1/3的精确概率。

与伯特兰悖论的联系

这个问题与Bertrand的Paradox有着有趣的联系 。Bertrand的悖论表明了指定用于在概率问题中定义随机变量的过程的必要性。事实证明,有多种方法可以在一个圆圈中定义“随机和弦”,不同的定义可以导致对概率问题的不同答案。有关示例,请参阅Wikipedia文章

对于该问题中“随机和弦”的定义,端点的密度在圆上是均匀的。做出该选择后,将确定其他分布。例如,1000个随机和弦的长度分布如下所示。长度不均匀分布!弦长的理论密度重叠在样品的分布上。如果您更改随机选择和弦的过程(例如,您强制均匀分布长度),您也可以更改问题的答案,如Bertrand's Paradox中所示。


▍关注我们

大数据部落   -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和
统计分析和数据挖掘咨询服务: y0.cn/teradat (咨询服务请联系 官网客服
点击这里给我发消息 QQ:  3025393450

【服务场景】        
 
             
科研项目;
        
             
公司项目外包;线上线下一对一培训;学术研究。
【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务
 
分享最新的大数据资讯,每天学习一点数据分析,让我们一起做有态度的数据人 【大数据部落】大数据部落提供定制化的一站式数据挖掘和统计分析咨询服务
微信客服号:lico_9e
QQ交流群:186388004  
欢迎关注微信公众号,了解更多数据干货资讯!

 

猜你喜欢

转载自blog.csdn.net/qq_19600291/article/details/81064688