手机通话记录统计分析
现如今,智能手机是人手一份。每天我们都通过手机与外界沟通交流,手机作为必不可少的媒介,无形中记录着我们日常生活中的点点滴滴。这些信息主要包括个人位置信息、通信信息、账号密码信息、存储文件信息等四大类。由于Android是开源的,软件用户可自行对软件进行修改、复制及再分发,直接进行信息交换。有些用户还会自己对系统进行破解,获取权限,窃取个人信息。一些山寨手机甚至还留有后门程序,固化窃听软件,并通过远程遥控使手机话筒在用户不知情的情况下开启,把手机变成一个窃听-器,造成个人隐私泄露。
因此,通过对手机数据的挖掘与分析,可以便捷地进行用户行为分析;比如,利用手机定位数据可以进行用户特征挖掘;利用通话记录可以进行社交亲密度分析等等。我带着这个想法,导出自己手机上可以找到的各种数据文件,并通过R软件十对这些数据进行了简单的统计分析,现将步骤记录如下:
通话记录分析
首先,读取xml格式通话记录并解析,将其转换成数据框格式;然后便可以通过DT包快速便捷地查看通话记录。
library(XML)
xmlfile=xmlParse(file.choose(),encoding="UTF-8") #读取xml格式通话记录并解析
mydata=xmlToDataFrame(xmlfile) #转换格式
head(mydata)
mydata$Duration=as.numeric(mydata$Duration)
查看列表
library(DT)
datatable(mydata, options = list(pageLength = 10))
按人统计通话记录
calldata=data.frame(Totaltime=with (mydata , tapply (Duration , list (ContactName) , sum ) ),
Average=with (mydata ,tapply (Duration , list (ContactName) , mean ) ))
head(calldata)
library(plotly)
plot_ly(calldata,x=rownames(Totaltime),y=Totaltime,type = "bar",name = "sum")
add_trace(calldata,x=rownames(Average),y=Average,name = "mean")
查询
plot_ly(mydata[mydata$ContactName=="张三",],x=StartTime,y=Duration,type = "bar")
plot_ly(mydata[mydata$ContactName=="张三",],x=StartTime,y=Duration)
按日统计通话记录
library(dygraphs)
library(xts)
mydata$StartTime=as.Date(mydata$StartTime) #去除分秒
daydata=with (mydata, tapply (Duration , list (StartTime) , sum ) ) #每日通话时长
dygraph(daydata, main = "每日通话时长走势") %>%
dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))
### 转化成时间序列画图
xtsdata=xts(daydata,as.Date(names(daydata)))
index(xtsdata)
dygraph(xtsdata, main = "每日通话时长走势") %>%
dyRangeSelector(dateWindow = c("2016-05-01", "2016-06-01"))
这篇文章只记录了对通话记录的简单统计和可视化,手机数据真正的宝矿是其内置的各种传感器,随着物联网时代的到来,如何通过优秀的算法挖掘分析这些信号数据,具有十分重要的意义。
反馈与建议
- 作者:ShangFR
- 邮箱:shangfr@foxmail.com