个性化阅读
专注于IT技术分析

R中的文本挖掘:《PokémonGO》提及是否真的在推高股价?

点击下载

本文概述

内容

  • 介绍
  • 创建你自己的R新闻趋势功能
    • 加载库
    • 汇总趋势数据
    • 汇总股价数据
    • 制作数据框
    • 计算相关
    • 制作图表
      • 使用ggplot制作折线图
      • 叠加视觉效果
  • 总结

简介:彭博终端机的新闻趋势功能(不显示)显示

在7月下旬的通勤上, 英国脱欧公投后, 以及广受欢迎的PokémonGO游戏崛起, 我在上班时正在听彭博电台的广播。彭博社(Bloomberg)绕开了英国退欧和市场的日常沉思, 暂时转而关注技术股, 以及如何使用称为NT(News Trends)的彭博终端功能来说明新闻趋势和股价的信息, 汇总话题提及时间序列中的许多新闻来源。根据描述, 这是每月20, 000美元服务的全部功能。自从研究生毕业以来, 我还没来过码头, 我也不记得NT功能。

尴尬的广播节目涵盖了”孩子们”正在玩的一个名为”神奇宝贝GO”的游戏及其与任天堂股票的关系。在讨论中详细讨论了如何在终端中使用NT并由此说明该服务的价值主张时, 希拉里·克拉克(Hilary Clark)谦虚地表示:”任天堂的股票受到了推动……受到《PokémonGO》的提及”, 后来又增加了”价值此功能[NT]只是为了查看推动股价上涨的因素。”

现在, 作为文本挖掘者, 我特别注意单词的选择。在通信理论中, 消息的含义在于目的地, 而不是发送者或渠道。这意味着”选择”, “语调”和”媒介”一词会影响听众的理解和对信息的态度。你可能已经固有地知道这一点, 但需要注意的是:正确选择你的单词, 语气和频道会影响消息的含义, 任何已婚的人都直接知道这一点:)。

我猜想你是srcmini博客的读者, 已经发现Clark的单词选择存在缺陷:作为权威(发送者)在权威广播(频道)广播中发言的她, 在NT服务中使用了”驱动”(消息)之类的词, 其中包括相关性计算。一个不老练的消费者可能会从她的话中解释因果关系, 甚至可能尝试使用NT服务交易股票。但是, 由于我们是经验丰富的受众(目标), 所以我们拥有含义, 因此可以重新创建我们认为NT服务的内容并确定其对我们自己的价值。如果成为每月20, 000美元的服务如此有价值, 那么我们应该可以使用Google新闻趋势和Yahoo的股票服务获得一些新颖的见解。

让我们免费提供我们自己的新闻趋势功能, 看看穷人的彭博终端(Bloomberg Terminal)的NT服务可能有多棒!

创建你自己的R新闻趋势功能

加载库

要开始加载库, 我们将需要进行视觉处理。 Quantmod库是用于导入股票市场数据的流行R包。接下来, 需要gridExtra和grid来排列两个结果视觉效果。 ggplot2和ggthemes均用于构建时间序列。 ggplot2是一个很棒的图形库语法, 而ggthemes提供了预制的调色板以便于实现。最后, gtrendsR软件包提供了获取Google趋势数据的界面。

如果尚未安装软件包, 则可能需要安装。在这种情况下, 请使用例如install.packages(” gtrendsR”)命令导入gtrendsR软件包。

汇总Google趋势数据

下一步是组装将要绘制的数据。在下面的代码中, 将usr字符串更改为你自己的Gmail帐户。然后将psw更改为你的密码。这两个对象将传递到gconnect(), 以便你的R控制台可以以编程方式连接到Google趋势服务。接下来, 使用带有搜索模式和日期的gtrends()创建戳。片刻之后, 将返回一个列表, 其中包含趋势信息以及其他数据。在列表中, 每周都会收到0-100之间的索引分数。你可以直接在此列表上调用plot()来创建图形。

现在检查代码, 并确保设置你的Gmail变量以绘制图形!

请注意, 由于帐户安全性或帐户的两步验证, gconnect()有时可能会失败。但是, 这不会阻止你完成本教程。继续走下去!

汇总任天堂股票价格数据

接下来, 你需要汇总任天堂的股价。任天堂在日本股票市场上交易, 并以数字而非名称来引用。使用setSymbolLookup(), 传入任天堂的股票指数。不要忘记也添加yahooj, 因为数据是从Yahoo Japan收集的。换句话说, 你应该指定应从Yahoo Japan下载YJ7974.T或Nintendo的库存数据。 setSymbolLookup()函数用于创建一个或多个股票代号的参考表。

下一个函数调用getSymbols()实际上从Yahoo Japan检索信息。返回的对象是可扩展时间序列(xts)类。 xts对象类似于数据框, 但行名是日期而不是字符串。在这种情况下, 对象包含从2007年至今的日期以及当天的开盘价, 收盘价, 最高价, 最低价和调整后的价格。再一次, 你可以对返回的对象进行plot()创建第二张图:


# Specify which stock data to download and from where
setSymbolLookup(YJ7974.T='yahooj')

# Load YJ7974.T from Yahoo Japan
getSymbols('YJ7974.T')

# Plot the Yahoo data
plot(YJ7974.T)
R中的文本挖掘:《PokémonGO》提及是否真的在推高股价?1

由于原始数据存在时间上的不匹配, 因此你需要首先将日期中的子集设置为今年的日期, 然后调整xts的每日数字以与每周趋势数据保持一致。调整xts对象与数据框略有不同。将2016-01 / 2016-8放在时间范围的子集中, 将时间序列划分为2016年1月至2016年8月之间的日期。xts类具有独特的分组功能。在这种情况下, apply.weekly()随同xts对象以及要应用到每个组的均值函数一起传递。


# Subset the time series
nintendo.xts <- YJ7974.T['2016-01/2016-8']

# Get the weekly average of the time series
nintendo.xts <- apply.weekly(nintendo.xts, mean)

如果需要, 下面的代码将xts对象更改为数据帧, 因此你可以使用更常见的功能, 例如subset()。


# Change the `xts` object to a data frame
nintendo <- data.frame(date=index(nintendo.xts), coredata(nintendo.xts))

# Subset the data frame to only include data from August 2016
nintendo.aug.16 <- subset(nintendo, format.Date(date, "%y")=="16" & format.Date(date, "%m")=="08")

通过在戳戳对象上使用str, 可以标识包含趋势信息的列表元素。 poke $ trend元素是传统的数据框。在数据框中, 每周趋势向量称为pokemon.go。此向量提取到新对象poke.trends中。

为视觉制作数据框架

现在, 你可以将数据组装到一个简洁的数据框中, 以在视觉效果中使用。 poorman.nt对象是一个带有nintendo.close, poke.trends和week.2016向量的数据框。第一个参考每周平均收盘价。下一个包含每周的神奇宝贝GO得分。最后, week.2016包含一个介于1和任天堂对象中行数之间的数字序列。你可以附加星期开始日期, 但是简单的序列可以使画面更具吸引力。

计算相关

广播电台提到相关系数为0.95。使用下面的代码, 我们使用cor()来计算nintendo.close和poke.trends之间的相关性, 我们已经非常接近了!

制作图表

最后一步!让我们根据poorman.nt数据制作两个折线图。在数据中使用ggplot传递, 指定X和Y轴以及代表各个星期的1组。下一层是几何线geom_line, 具有一些美感。下一层应用Google Docs主题。为了对齐图表, 添加了另一个主题调用以删除Y轴的各个方面。最后, 使用ggtitle添加标题。

使用ggplot制作折线图

对趋势数据重复相同的过程。 Y轴随行的颜色和标题一起更改为poke.trends。

叠加视觉效果

最后, 将每个ggplot对象传递到grid.arrange中, 以堆叠视觉效果。这使你的受众更容易使用下图。

显然, 数据是相关的。诚然, 你甚至可以看到新闻峰值发生在股价峰值之前一周。尽管如此, 基于此类分析的市场时机仍然充满挑战。这种视觉效果的周期(从来没有真正看到过彭博社的报道)在几周内, 但是市场的走势更加动态。此外, 在峰值之后, 这些行的行为也不相同。它是微妙的, 但线是不同的。因此, 要在此信息上进行交易, 你可以计时新闻趋势线的市场峰值。

总结

恭喜!你现在已经成功在R中建立了自己的穷人的新闻趋势功能!

充其量, 彭博终端机上的NT分析会同时出现偏差。在最坏的情况下, 新闻报道代表的是后预测指标, 而不是模型或定性交易策略的预测指标。在彭博终端上出现有关任天堂谨慎话语的消息时, 市场已经吸收并做出了相应反应。因此, 股价和新台币分析无非是一种好奇心分析……只有最早的投资者才有可能进行新闻订阅交易, 但那些手动创建和进行心理处理的投资者将被遗弃。我将来将如何使用延迟的新闻源进行交易?我希望金融专业人士能提供更多的技巧, 因为我敢肯定大多数文本挖掘者和数据科学家都会认识到相关性作为因果关系和暂时性方面而被忽略的问题。

选择单词很重要。这不仅对新闻记者重要。单词对于文本挖掘和定量分析很重要。如果将它们用作机器学习的特征, 则建模问题的词语和深度尤其重要。我可以轻易地向记者怀疑的好处是, 他们并不是要在直播中推断相关性和因果关系是相同的。如果是这样, 我们都应该停止吃冰淇淋。随着冰淇淋销售量的增加, 溺水的情况也将增加……必然有因果关系。

这个案例研究是否激发你对使用R进行文本挖掘的兴趣?前往Ted的”文本挖掘入门:单词袋”课程, 在该课程中, 你可以了解有关此高级数据科学主题的更多信息!

赞(0)
未经允许不得转载:srcmini » R中的文本挖掘:《PokémonGO》提及是否真的在推高股价?

评论 抢沙发

评论前必须登录!