《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一1.4 信号强度的分析-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一1.4 信号强度的分析

简介:

本节书摘来自华章计算机《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一书中的第1章,第1.4节,作者:[美] 德博拉·诺兰(Deborah Nolan)  邓肯·坦普·朗(Duncan Temple Lang)  更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 信号强度的分析

我们已经使用了可视化和统计汇总等方法来帮助清洗和格式化数据。下面我们转向对响应变量—信号强度的特性的调研。在为IPS设计模型之前,我们需要更多地了解信号是如何表现的,以下提问将用于指导我们的调研。
在每个位置和方向上,我们多次测量了同一个接入点的信号强度。这些信号强度是如何表现的?即在每个位置和方向上,这些重复测量的值的分布情况如何?在所有的位置上,信号强度的表现都相同吗?或者说,位置、方向以及接入点等因素对这个分布有影响吗?
在实验室环境中,信号强度随着距离的对数大小而线性地衰减。按照简易的三角定位法,使用3个接入点的信号强度,就可精确地定位一个设备的位置[1,7]。但在实际环境中,建筑物的物理特征和人的活动可对信号强度的测量带来相当大的噪声。如何刻画信号强度和设备到接入点距离之间的关系的特征?设备方向会如何影响这个关系?对于所有接入点,这种关系是相同的吗?
我们在下面两个小节考虑这些问题。
1.4.1 信号强度的分布
我们想比较不同方向上信号强度的分布,以及不同接入点上信号强度的分布。因此,我们需要对数据进行划分。我们有兴趣了解这些分布是正态的还是倾斜的,也想了解它们的偏差。
我们在检查方向对信号强度的影响时,方法是在地图上设置一个固定的位置,让实验者按8个角度旋转,以观测信号是如何变化的。同时,我们也分别对每个MAC地址进行检查,因为,例如在90胺较蛏希笛檎呖赡苷妹嫦蛞桓鼋尤氲悖扯宰帕硪桓鼋尤氲恪N耍颐鞘褂胠attice程序包[9]中的bwplot()函数制作简单的箱线图,操作如下:

从图1-6中,我们看到信号强度随着方向发生变化,不管它是属于近处的接入点还是属于远处的接入点。注意,我们已经删除了MAC为00:0f:a3:39:dd:cd的数据记录,因为在下一小节中,它被识别出是一个多余的地址。
我们记得在汇总统计量里,信号强度以负值方式测量,即

其中,最小的值,如-98,对应于最弱信号,而最大的值,如-25,对应于最强的信号。
当我们检查其他几个位置时,也会发现有类似的依赖性,即信号强度对角度的依赖性。例如,在x=23,y=4的中央位置,我们将不同角度和不同MAC地址的信号强度分布加以比较。我们使用lattice程序包里的densityplot()函数,因为它方便对这些变量进行条件过滤。对于这个位置,我们用如下操作生成48条密度曲线:
image

图1-6 每一个接入点对应于不同角度的信号强度。该图中的所有箱线图表示一个位置上的信号,该位置位于楼层平面图的左上角,即x=2,y=12。箱子的次序按照接入点与手持设备的角度排列。信号强度对角度的依赖性在一些接入点上表现得非常明显,例如右上图格中的00:14:bf:97:90
其中的很多分布看起来是近似正态的,但是有一些分布与标准正态分布之间存在严重偏离(见图1-7)。分布的中心也随着角度和MAC地址的变化而变化,这说明必须对角度和MAC地址进行条件过滤。
如果我们想要对所有的166个位置、8个角度和6个接入点进行信号强度分布检测,需要创建成千上万个箱线图或密度曲线。另一种方案是,只对所有的“位置-方向-接入点”组合,检查其汇总统计值,如信号强度的均值和SD,或者信号强度的中值和IQR。对于每一个组合,我们大约有100个观测值。为了对每个组合汇总其统计值,我们首先创建一个特别的因子变量,它包含了166个位置上的观测对(x,y)的全部唯一组合。为此,执行如下操作:

下面,我们为所有(x,y)、角度和接入点的组合创建一个数据框列表,操作如下:
imageimage

图1-7 对于每个接入点,按照不同角度的信号分布。这里的密度曲线所表示的是在位置x=24,y=4上测量到的信号强度。这48个密度图代表每一个“接入点×角度”组合。每个图格大约有110个观测值。一些曲线看起来近似于正态分布,而其他许多曲线看起来是向左倾斜的
然后,我们用如下操作为每个数据框计算汇总统计值:

下面检查标准偏差,看它们是否随着平均信号强度的变化而变化。通过把avgSignal调整成类别型变量,我们为avgSignal各个分组绘制出关于sdSignal的箱线图。操作如下:

从图1-8可以看出,最弱的信号具有最小的标准偏差,SD呈现出随着平均信号强度的增大而增加的趋势。如果我们打算建立信号强度的行为模型,则需要考虑以上这些特性。
image

图1-8 对照于平均信号强度的信号强度SD标准偏差。画出了在每个“位置-角度-接入点”组合上检测到的信号的平均值和标准偏差。较弱的信号具有较低的变化性,而较强的信号具有较大的变化性
通过对照观测值的个数,画出avgSignal与medSignal之差,我们就能检查信号强度的偏斜程度。这里,我们使用smoothScatter函数来完成绘图,以避免点的相互重叠。我们也增加了对局部平均值(均值和中值之差)的绘制,以评估其大小。操作如下:

我们使用loess()函数对均值和中值之差进行局部平滑:

然后,我们使用拟合模型预测每个num值的差值,并将这个预测值添加到散点图上:

从图1-9中,我们看到这两个中心性度量值彼此相似。它们的差一般小于1~2dBm。
image

图1-9 信号强度的均值和中值的比较。这张平滑后的散点图显示了按照观测值的个数,每一个“位置-接入点-角度”组合的信号强度的均值和中值之差。这些差值接近于0,偏差一般为1~2dBm
1.4.2 信号与距离之间的关系
一种用于检查距离与信号强度之间关系的方法是,将检测区域里的信号强度进行平滑处理,创建类似于地形图(topographical map)的等高线图(contour plot),楼层平面中具有较强信号的部分对应于等高线图的山峰。与上一节对信号强度的分析过程一样,我们需要对接入点和方向加以控制。这里,我们先选择一个MAC地址和一个方向进行检查。我们用如下命令,为“角度×MAC地址”组合选择汇总统计值:

我们使用颜色绘制地形图,即热度图(heat map)。fields程序包[6]使用薄板样条法,将在观测位置上的信号强度值拟合到一个表面上。这个程序包也提供使用热度图对该表面进行可视化的绘图子程序。fields程序包中的Tps()函数要求对每个(x,y)提供一个唯一的“z”值,因此,我们必须对信号强度进行汇总处理。offline数据在oneAPAngle变量中给出了每个位置上的大约100个记录值,我们建立offlineSummary的子集如下:

然后,加载fields程序库,调用Tps()将平均信号强度拟合到一个平滑表面上:

下面,我们使用predictSurface()函数,预测在观测点posX和posY网格之上的拟合表面的值,即

然后,我们使用plot.surface()函数,绘制预测的信号强度值如下:

最后,我们在图中加上进行测量的位置:

我们可以将这个绘图子程序包装成一个函数,从而可以对MAC地址和角度以及需要的其他绘图参数进行参数化。将该函数称为surfaceSS(),具有3个参量,data为离线的汇总数据框,mac和angle分别为MAC地址和角度,用于选择想要进行平滑和绘图的数据子集。我们用十几个MAC地址和角度调用surfaceSS()函数,并对它们进行比较。为此,我们先修改R的绘图参数,使得我们可以把4个等高线图放在同一张画板上,并减小分配给边界的尺寸,使得画板上有更多的空间用于绘制热度图。首先,把当前的绘图参数设置保存在parCur中,操作如下:

然后,使用mapply()函数对surfaceSS()函数执行4次调用:

最后,我们重新设置绘图参数:

我们在图1-10中看到,可以很容易地识别接入点的位置—那些位于“山脉”顶部的深红色区域。我们也能确认方向对信号强度的影响效果。此外,走廊效应也呈现出来。相对距离来说,沿着走廊的信号强度比其他地方更强,因为在那里信号没有被墙阻挡。
根据大楼的楼层平面图,虽然我们知道接入点的位置,但并没有它们的确切位置,也不知道MAC地址与接入点的映射关系。幸运的是,我们刚刚建立的等高线图可以轻松地将MAC地址联系到已标记出的接入点上(见图1-1的楼层平面图)。
例如,从图1-10可知,图的最上部出现的信号清楚地对应于大楼左上角的接入点。此外,按照文档,训练数据是在大楼内以1米间隔进行测量而得来的,这样,我们可以使用楼层平面图的灰色圆点来估计接入点的位置。我们发现有两个MAC地址具有相似的热度图,且都对应于大楼中央的接入点(即x=7.5,y=6.3)。这里,我们决定选择第一个MAC地址。这个决定究竟对位置预测的结果有何影响,将作为练习题留给读者思考。
image

图1-10 在两个接入点和两个角度上的信号中值。这4个热度图提供了信号强度的平滑地形表示。上面的两张地图分别对应于接入点00:14:bf:b1:97:90的角度0埃ㄗ笸迹┖徒嵌?35埃ㄓ彝迹5紫碌牧秸诺赝挤直鸲杂τ诮尤氲?0:0f:a3:39:e1:c0的两个同样角度

下面,我们对楼层平面图上6个接入点的相关位置建立一个小矩阵。

注意,我们使用了MAC地址作为行的名字。即

这些行名可用于检索数据。
为了检查信号强度与接入点距离之间的关系,我们需要计算从信号发射设备的位置到接收该信号的接入点之间的距离。我们首先计算x坐标和接入点x坐标之差,以及类似的y坐标之差。为此,执行如下操作:

然后,我们使用这些差值找出手持设备与接入点位置之间的欧氏距离,执行如下操作:

最后,我们对每个接入点和设备方向,绘制一系列散点图,执行如下操作:

散点图如图1-11所示。在这些图中表现出曲线关系。进行对数转换也许能改进这种关系。但是,由于信号是负值,在进行转换时需要十分小心。我们将信号强度与距离之间的关系留给读者做进一步的调研。
image

图1-11 信号强度与接入点的距离的关系。48个散点图显示了对于每个设备的6个接入点和8个方向,信号强度与接入点的距离之间的关系。图中形状表明了在各张图中曲线关系是一致的

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: