较早的时候就有人作过Twitter中文用户调查,它是以问卷的形式收集了500人的数据,得出了一些有趣的结论。本例则是希望利用twitteR包获取更多中文Twitter用户样本加以分析。首先遇到的第一个问题就是如何分辨出中文用户,笔者是从这篇博文获得启发,思路就是先从一位中文推特界的大佬入手,那么其粉丝应该基本上就是中文用户了。本例中选择的对象是“连岳”(lianyue),他的粉丝数达到了八万人。可能会问为何不选有十二万粉丝的“艾未未”?因为他比较国际化一些,其粉丝有不少是外国友人。
我们首先加载twitteR包,然后获取“用户”对象,从lianyue的follower中抓取5000名粉丝。这一步要注意,如果你的位置正好在和谐社会内,那需要VPN翻墙才能抓到数据,而且得花点时间。之后将获得的数据转为数据框格式方便处理。
library(twitteR)
lianyue <- getUser('lianyue')
follow.lian <- lianyue$getFollowers(n=5000)
df.lian <- do.call('rbind',lapply(follow.lian,as.data.frame))
在上面这个数据中有四个可用于研究的变量,分别是:
- statusesCount 发推数
- followersCount 粉丝数
- friendsCount 朋友数
- created 开户时间
df.sub <- subset(df.lian,friendsCount<2300 & followersCount<3000 & statusesCount<10000)
df.sub$time <- as.Date(df.sub$created)
df.sub$ntime <- as.numeric(df.sub$time)
对于手头的数据,我们跳过描述性统计,首先观察这些用户的开户时间是如何分布的。加载ggplot2包绘制条形图观察。可以看到在2011年下半年新开用户出现了飙升,是翻墙手段有突破?还是国家队大规模入驻?有兴趣的同学可以进一步挖掘其原因。
library(ggplot2)
p <- ggplot(df.sub,aes(x=time))
p + geom_bar(fill='red',colour='black',binwidth=30)
第二个我们想绘制这些变量的散点图观察之间的关系。除了X和Y轴表示两个数值变量之外,点的大小表示了发推的数量,颜色的不同表示了开户时间,散点越大表示发推越多,颜色偏兰表示开户早,偏红表示开户晚。
p <- ggplot(data=df.sub,aes(x=friendsCount,y=followersCount))
p + geom_point(aes(size=statusesCount,colour=ntime),alpha=0.8)
从上图中可以观察到大部分用户聚集在左下角,有较多粉丝的用户似乎多半是发推较多,或是开户较早。为了验证这一点我们使用加性模型试一下。关于加性模型可以参照笔者之前的一篇博文。
library(mgcv)
model <- gam(followersCount~s(friendsCount)+s(statusesCount)+s(ntime),data=df.sub)
par(mfrow=c(1,3))
plot(model,se=T)
我们来看最后的结果,第一个图显示你fo的人越多,那么被fo的可能性也越大,不过也有例外。第二个图显示你发推越多,被fo的可能性也越大,但没人喜欢话唠,话太多就会被unfo掉,关键还是要看发推质量。第三个图大致显示开户较早的被fo的较多。估计第一批用twitter的都是黄埔一期的精英吧。
本文只抽取了数千个数据的样本来分析中文twitter用户,抽样方法不一定科学,所以其样本不一定具有代表性。有兴趣的同学对于这些样本还可以划分细类做进一步分析,或是利用聚类分析等其它方法得出更有趣的结论。如果你觉得这篇博文有所启发,请来fo我吧(@xccds)。
没有评论:
发表评论