如何成为数据分析师分析HCI数据

如何分析HCI数据 - RunForever - 博客园
posts - 13, comments - 3, trackbacks - 0, articles - 0
在WinCE上调试蓝牙的过程中,对于一些Bluetooth Core相关的问题,经常需要去分析HCI数据(包括Command、Data和Event),然后和Bluetooth Core Spec中的相关内容进行对比以定位问题,最后寻找根本原因。
列举一下在分析HCI数据的时候可选的方法:
l 通过打开微软蓝牙协议栈中固有的Debug Zone信息来进行(详细参照)
优点是信息全面,缺点是信息量大。
l 通过Sniff Log
优点是最直接的分析空中包中实际交互的数据,屏蔽其他环节可能出现的问题,缺点是需要昂贵的硬件抓包工具,容易发生丢包的情况,而且从HCI数据和空中包的对应也需要对协议的理解也有较深的要求。
l 直接分析HCI数据,也是本文中所介绍的方法
优点是针对性强,缺点是需要对协议本身有一定的了解。
本文尝试从最基本的HCI数据上来分析HCI命令和事件,对于HCI Data,由于其Payload部分可能多种多样,包括L2CAP、SCO、RFCOMM以及各种各样的Profile等,则不在本文的探讨的范围内。
1. 如何来区分Command和Event Packet
我们知道,通过HCI Packet包括四种,即Command,Event,ACL和SCO/eSCO,对应到MS-Stack中的定义,即为COMMAND_PACKET ,EVENT_PACKET,DATA_PACKET_ACL和DATA_PACKET_SCO。
如下(详细参照bt_hcip.h):
enum HCI_TYPE {
COMMAND_PACKET = 1,
DATA_PACKET_ACL = 2,
DATA_PACKET_SCO = 3,
EVENT_PACKET = 4,
ETYPE_FINISH = 5
需要指出的是COMMAND_PACKET方向是从Host写入到Controller,EVENT_PACKET为Controller发送给Host,即单向的数据。而DATA_PACKET_ACL和DATA_PACKET_SCO为双向的数据,即可以Host&Controller,也可以Controller&Host。
接下来看两个与发包和收包相关的函数的定义,如下:
int HCI_WritePacket(HCI_TYPE eType, BD_BUFFER *pBuff)
int HCI_ReadPacket(HCI_TYPE *peType, BD_BUFFER *pBuff)
其第一个参数etype就是用来表示R/W Packet的类型,第二个参数为包的具体数据:
所以通过在HCI_WritePacket()/HCI_ReadPacket()中对eType值的判断,很容易知道是Command Packet,还是Event Packet。
2. 如何分析Command包
首先来看HCI包的结构:
其中低10个bit用来表示HCI Command的OCF域,可以拿着这个值到BlueCore Spec中去查询对应的命令,而bit10~bit15用来表示OGF域。对于OGF即使HCI命令的种类,具体的种类包括Link control, Link PolicyController&BaseBand以及Information等。
For example,HCI_Disconnect在MS-Stack的定义值为0x0406,具体参照文件bt_ddi.h。而其OCF域,也即bit0~bit9为0x006,对应的OGF域,也即bit10~bit15域为0x01。根据BlueCore Spec的定义,OGF为1表示Link Control Command。所有HCI Packet的定义在Volume 2-Core System Packet Part E-Host Controller Interface的Chapter 7th-HCI Command and Events中定义(以BlueCore Spec2.1为例),查询7.1th-Link Control Command一节,对应的Command Code为0x006,其对应的Command应该是HCI_Disconnect,如下所示:
下面举一个具体的Command Packet分析过程:
Write(1, 25):
0B 04 16 77 89 39 98 22 00 54 0B 3F 42 F8 38 EE
90 09 BC 1D 1C 1E D1 E2 61
G=0x1, code=0xb
首先看OCF(bit[0~9])为0x0b,而OGF(bit[10~15])为0x01,对照BlueCore Spec,则该条命令应该为Link Controller Command域中的HCI_LINK_KEY_REQUEST_REPLY(0x0b),Parameter Total Length(bit16~23)0x16,为该命令的解释如下:
根据该命令的详细解释,其参数包括两部分BT_ADDR和Link_key,分别占用6字节和16字节,所以BT_ADDR为77 89 39 98 22 00,而Link_key为54 0B 3F 42 F8 38 EE 90 09 BC 1D 1C 1E D1 E2 61。
所以,可以看到分析Command Packet的关键在于两点,第一点是根据Packet找到OCF,OGF以及total parameter length,然后找到该command的详细解释,即包含了那些参数以及每一个参数的具体长度,就可以来对Command Packet进行解析了。
3. 如何分析Event包
首先,来看Event Packet的结构:
下面以一个具体的Event Packet来进行分析:
Read(5, 8):
17 06 77 89 39 98 22 00
很容易可以看出,Event Code为0x17,Parameter Total Length为0x06。由于Event没有域之说,可以直接拿着0x17去BlueCore Spec中的Events中去查找对应Event Link Key Request,如下:
根据该Event的详细解释,其参数为BT_ADDR,共占用6个字节,即为77 89 39 98 22 00。从事用户研究行业,要掌握哪些数据分析的理论(有哪些可供学习的书籍?)?要学会用哪些工具? 是否需要学习大数据分析?
首先,不管是什么学科的数据分析,总是避不开最基本的概率论和数理统计知识。这一点一般的数理统计教科书都能够满足入门的要求。除此之外,还需要自学实验设计的方法,例如 Within-Subject Design & Between-Subject Design 等等,了解这些基本的实验设计方法才能更容易理解之后的数据分析知识。学习完基础的概率统计知识之后,就是一系列的数据分析方法了。很多数理统计的教科书都没有系统地介绍数据分析方法,比如我们本科学的《概率统计(理工类)》(Probability and Statistics for Engineering and the Sciences) 这本书中仅仅介绍了方差分析(包括双因素方差分析)。想短时间内了解完所有的数据分析方法是不现实的,但是就用户研究领域而言,最常用的数据分析方法并不是很多,短时间内了解还是完全没有问题的。之所以强调短时间,是因为我觉得要想系统地学习学科知识,最好的办法就是快速地上手,而将中间的原理、推导暂时忽略,待后来遇到问题的时候再去了解方法的来龙去脉。阅读过的 CHI 论文不多,基本上都会使用到方差分析(单因素、多因素、多元)、因子分析、主成分分析、相关性分析、回归分析这些常见的数据分析方法等等。这里引用一下东京大学 Koji Yatani 教授的课程网站的内容:Some Statistics Basics (Or "before doing an experiment or analysis")Types of dataNull Hypothesis Significance TestingSome tips for RGraphics in RMethods to Complement Null Hypothesis Significance TestingParametric vs. Non-parametricEffect SizePower AnalysisNormality and Data transformation (Shapiro-Wilk test and Kolmogorov-Smirnov test)Outlier Detection and RemovalParametric TestsF-testt-testANOVA (Analysis of Variance) for comparing the meansPost-hoc testsNon-parametric TestsChi-square test, Fisher's exact test, and McNemar's testCochran's Q testMann-Whitney's U testWilcoxon Signed-Rank testKruskal-Wallis and Friedman testCorrelationCorrelationCoefficients of association (Correlation for nominal data)Agreement and Inter-rater Reliability (Cohen's Kappa)Latent Variable AnalysisPrincipal Component AnalysisFactor AnalysisCorrespondence Analysis (Multiple Correspondence Analysis)Regression AnalysisLinear RegressionMultiple regressionMulti-level linear regression (mixed-effect linear model)Logistic Regression (Binary Logistic Regression)Generalized Linear Model这里包含了绝大部分常用的数据分析方法,使用 R 语言作为示例,对概念都有生动的例子进行解释,还是很容易看懂的。当然,如果已经了解了上面提到的数据分析方法,那么阅读 CHI 论文应该没有什么很大问题了。于是,就可以开始学习统计分析软件了,例如 IBM SPSS、SAS 等等,当然如果有代码基础的话,可以学习 R、Python 这些编程语言等,这两种语言都有大量的数据分析的包,用来做数据分析还是非常方便的。如果还是学有余力,还能再去了解数据挖掘的知识就更好了。学习途径:1. 基础的概率和数理统计知识很多 MOOC 讲得都不错,这里尤其推荐可汗学院的统计学,很多课堂上听得一头雾水的概念,他一解释就懂了。2. 数据分析的话,我也没找到 MOOC,参考中给出两个都是不错的自学教材。3. 数据挖掘还没有深入学习,所以也不能给出建议和推荐。参考:[1] Quantifying User Experience - Practical Statistics for User Research, Jeff Sauro & James R. Lewis[2] HCI Statistics, ===== 原回答 ======正好最近也在苦恼这个问题,占个坑,一会回去答。
结合个人目前的一点经历,来说说想法吧。&br&&br&
用户研究需要结合定性和定量的研究,对于定量如何做,这个要取决于公司的产品。初级的分析可以看看各种趋势,统计图,中级点的可以看看聚类、回归、关联、预测等,高级点的可以看看时序、文本、社交网络分析等。分析方法很多,依次系统学肯定很慢,跟不上工作的节奏,如果楼主有一定的统计背景,跟着项目学起来应该会很快。&br&&br&
至于书籍,可以先看看Frederick J.Gravetter的《 Statistics for the behavioral sciences》(有一定统计基础的请忽略),这本书可以让你快速的理解统计的基本原理,而且不枯燥乏味。中高级的话就需要学习些data mining 的知识了,以后这个肯定是趋势。书籍推荐两本目前在学的:Jiawei Han的《Data mining:concepts and techniques》、Yanchang Zhao的《R and Data Mining: Examples and Case Studies》,这两本我用着感觉不错。另外,也可以在网上学习下公开课,data mining这块,国外的发展还是比较成熟的。可以去Coursera,Edx,Udacity上去找自己感兴趣的课,有很多,目前我正在学习MIT的 The Analytics Edges。&br&&br&
说到这里,应该有人能看出来我用什么工具了,哈哈。。。SPSS+R+Python。工具还有其他的,根据不同的需求,工具也不同,比如数据可视化的工具,楼主可以自行百度下。工具不是重点,重点是数据的提取+数据的思维+数据对商业的价值点。&br&&br&
要不要学数据挖掘,我觉得这个取决于用研人员能达到的深度。个人认为,用研人员如果有研究思维,数据思维,产品思维,商业思维,创新思维,再加上体验设计思维,服务设计思维,战略规划,基本上就可以召唤神龙了,哈哈。。。这个也要取决于公司和个人。
结合个人目前的一点经历,来说说想法吧。 用户研究需要结合定性和定量的研究,对于定量如何做,这个要取决于公司的产品。初级的分析可以看看各种趋势,统计图,中级点的可以看看聚类、回归、关联、预测等,高级点的可以看看时序、文本、社交网络分析等。分…
已有帐号?
无法登录?
社交帐号登录君,已阅读到文档的结尾了呢~~
【精品】矢量数据的空间分析数..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
矢量数据的空间分析
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口君,已阅读到文档的结尾了呢~~
豆丁精品文档: histcite hist..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
文献分析工具Histcite简介
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 excel如何分析数据 的文章

 

随机推荐