SAP Analytics Cloud与R的集成

你可能在 SAP Analytics Cloud 故事中看到过“R 可视化对象”图标,并且想知道它是干什么的,如何使用这个功能。本文就来介绍一下。R 是一种用于数据分析的编程语言,它可以与 SAP Analytics Cloud 进行集成,讲述更丰富、更有感染力的故事。

借助 R,你可以:

  • 在故事中插入 R 可视化对象
  • 使用过滤器等控件与可视化对象进行交互
  • 编辑 R 脚本并预览可视化对象
  • 与其他用户共享包含 R 可视化对象的故事

结合使用 R 与 SAP Analytics Cloud 有哪些益处?

R 是一种广受欢迎的开源编程语言,全球很多人都在使用。这从某种程度上可确保 R 语言将会比其他一些较不知名的编码语言使用时间更长。

而这一优势又会促使世界各地的人们继续投入大量的时间和精力来创建各种全新的、有趣的统计图和图形,用于分析和展示数据。

将 R 可视化对象与 SAP Analytics Cloud 集成的另一个好处是灵活性。你可以更改统计图类型和特征,并通过多种方式展示信息。

下面重点介绍一下使用 R 的其他一些好处:

  • R 是统计分析领域最常用的语言和环境
  • 最新研究成果和算法会作为 R 包发布,一旦推出即可使用/测试,这样你便可以参与最新的研究成果并将其用于业务
  • 向统计学家寻求帮助或与之合作时,使用一门共同的语言会让双方的沟通更加高效
  • R 能让可视化功能发挥到极致。极具吸引力的可视化对象对于调动利益相关方的积极参与至关重要
  • R 以及最常用的 IDE:Rstudio 都是免费的

如何在 SAP Analytics Cloud 中使用 R 可视化对象?

要将 R 可视化对象添加到故事中,你需要运行 R 服务器并连接到 SAP Analytics Cloud。此连接通常由管理员负责处理,包括服务器或主机地址、端口号、加密证书和用户凭据。

此外,SAP Analytics Cloud 针对某些数据中心(EU、EUDP、AP1、US1 和 US2)提供预配置的现成 R 包

你可以在故事中选择“插入”选项卡上的“+”图标,然后从列表中选择“R 可视化对象”。页面上将会添加一个新的磁贴。

要在 SAP Analytics Cloud 中使用 R 功能,系统必须配置为连接到 R 运行时环境。根据你所处的地区,可使用的选项包括:

自配置的 R 服务器:借助这种方法,你可以连接在云端或本地机器上运行的 R 引擎并配置到 SAP Analytics Cloud。此选项侧重于用 R 引擎进行 R 执行。这种情况下,你负责维护 R 引擎(即安装你想要的包)。

SAP 提供的 R 服务器:此选项属于 SAP Cloud Platform 的一项服务,该服务为 SAP Analytics Cloud 提供现成的 R 服务器运行时,不需要你做任何配置。此环境包含一系列预装包。就哪些租户可以在 SAP Analytics Cloud 中支持这种 R 服务器运行时而言,该选项有一定的限制。请和技术专家确认你的 SAP Analytics Cloud 租户是否配置为使用 SAP 提供的 R 服务器。

  • 出于安全考虑,SAP Cloud Platform 中的 R 服务器运行时环境不能访问外部网络。因此,你不能安装新的软件包或连接到 R 脚本中的数据库。
  • 由 SAP 提供的 R 服务器运行时环境服务目前运行 R 版本 3.3.4 (Rserve 1.7.3),并包含预装包

注意事项:

  1. 你可以用 R 轻松创建基本图形。需要注意绘图命令。
  2. 绘图命令会参考来自 x 轴数据、y 轴数据、x 轴标签、y 轴标签、颜色和标题中的参数。要创建折线图,只需使用设置 type=l。ggplot2 包十分受欢迎,值得看一下,它有助于增强 R 中的可视化功能。我们来看看 R 中的一些可视化对象的代码段,这些代码段可以用于 SAP Analytics Cloud。
  3. 如果想要箱线图,可以使用 word 的箱线图功能,如果想要柱状图,可以使用 barplot 函数。

ggplot2 包十分受欢迎,值得看一下,它有助于增强 R 中的可视化功能。我们来看看 R 中的一些可视化对象的代码段,这些代码段可以用于 SAP Analytics Cloud。

在开始之前,值得一提的是,我们将使用 R 中的示例数据集绘制图形。首先,我们将使用 93 CARS 数据集。

1993CARS 数据集包含有关 93 辆 1993 年款新车的信息。为便于分析,我们将在 R 中使用这个示例数据集来展示一些可视化对象。

先决条件是将该数据集作为模型上载至 SAP Analytics Cloud,并将该特定模型分配至 R-Viz. 数据源。

直方图

直方图是指将数据分组并显示各组数据的频率分布的绘图。你可以改变分组,并查看其对数据可视化对象的可理解性的影响。有几种不同的直方图:

  • 单变量直方图:在这一部分中,我们将使用 ggplot2 的 qplot 函数创建直方图,从而查看数据集中某个变量的值分布情况。我们将查找出所有异常值或无关值,帮助识别变量之间值得进一步研究的任何关系。

用于查看每加仑英里数的频率分布的代码段:

每加仑英里数
qplot(MASS::Cars93$MPG.highway, xlab = ‘Miles Per Gallon’, ylab = ‘Count’, color=’MPG.highway’,
main=’Frequency Histogram: Miles per Gallon’)
: Miles per Gallon’)

输出:

汽车气缸数频率分布的代码段:

气缸数
qplot(cars$cylinders, xlab = ‘Cylinders’, ylab = ‘Count’,
main=’Frequency Histogram: Number of Cylinders’)

以表格格式查看气缸数所对应的值:

> table(MASS::Cars93$Cylinders)
3 4 5 6 8 rotary
3 49 2 31 7 1

由于气缸数为 3、5、8 的汽车和使用旋转气缸的汽车数量相对较少,我们将消除这些计数,因为它们不会对后面的绘图造成影响。

cars = MASS::Cars93[!MASS::Cars93$Cylinders %in% c(3, 5,8,’rotary’),]
qplot(cars$Cylinders, ylab = ‘Count’, xlab = ‘Cylinders’)

输出:

现在,每加仑英里数和气缸数的分布全都是右偏态(即长尾在较高量数的一侧),四气缸汽车的数量要比六气缸或八汽缸汽车多。此分析让我们觉得这两个变量之间有很强的相关性,因此我们将运行多变量图和回归分析,找出它们的相关性。

多变量图

在这一部分中,我们将运用多个 ggplot2 制图技术,对变量间的相互影响以可视化图形呈现出来。我们从重量与每加仑英里数之间的相互影响关系入手,重叠绘制一个线性最佳拟合线和一个散点图。

借助以下代码,我们可以生成线性回归曲线,并在 SAP Analytics Cloud 中呈现可视化结果。

library(ggplot2)
ggplot(data = MASS::Cars93, aes(x = Type, y = MPG.highway)) +
geom_boxplot() +
xlab(‘Type’) +
ylab(‘MPG’) +
ggtitle(‘MPG Comparison by Type’)

数据显示,重量和每加仑英里数呈现逆相关,即重量越大,每加仑英里数越小。

我们可以通过一些计算,确保线性最佳拟合线的拟合度超过 65%(如下所示)。此结果意味着汽车重量的变化可以解释超过 65% 的每加仑英里数的变化。

以下计算的结果仅在控制台中可见。
> fit = lm(MPG.highway ~ Weight, data=MASS::Cars93)
> summary(fit)

Call:

lm(formula = MPG.highway ~ Weight, data = MASS::Cars93)

Residuals:
Output:
Min 1Q Median 3Q Max
-7.650070331368 -1.835905253515 -0.077411039876 1.823530076599 11.617223746283

Coefficients:
Estimate Std.Error t value Pr(>|t|)
(Intercept) 51.601365428935715 1.735549783530243 29.73200 < 2.22e-16 ***
Weight -0.007327059223497 0.000554769961341 -13.20738 < 2.22e-16 ***

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’0.1 ‘ ’ 1
Residual standard error: 3.13893757053 on 91 degrees of freedom
Multiple R-squared: 0.657166485488, Adjusted R-squared: 0.65339908423
F-statistic: 174.434959384 on 1 and 91 DF, p-value: < 2.220446049e-16

下一张图使用箱线图显示示例汽车类型每加仑英里数度量的均值和分布。这在描述性数据分析中经常使用。此类图形用于显示分布形态、其中心值和差异性。在箱线图中:箱子的两端代表上下四分位数,因此箱子跨越四分位范围。

上图显示,与其他类型汽车相比,紧凑型、小型和运动型汽车的每加仑英里数较高。

运用配对图对多个变量进行相关性分析:

通过应用配对图,你可以制作散点图矩阵,帮助自己了解多个变量之间的相关性。

代码段:

pairs(~Horsepower+~Weight+~MPG.highway,data=MASS::Cars93)

输出:

上图显示各个变量之间的相关性。我们从中可以看出里程数高的汽车,其重量较轻。

用 R 语言绘制的三维散点图

Plotly 的 R 库为免费的开源库。你还可以使用 Plotly 的 R 库创建交互式三维散点图。  它会生成可用鼠标旋转的旋转三维散点图。前三个参数是代表点的 x、y 和 z 数值型向量。col= 和 size= 控制点的颜色和大小。

library(plotly)

MASS::Cars93$Man.trans.avail[which(MASS::Cars93$Man.trans.avail == ‘No’)] <- ‘Automatic’
MASS::Cars93$Man.trans.avail[which(MASS::Cars93$Man.trans.avail == ‘Yes’)] <- ‘Manual’
MASS::Cars93$Man.trans.avail<- as.factor(MASS::Cars93$am)

从上图,我们可以看到每加仑英里数、重量和马力的三维分布情况。

条形图/折线图

折线图

使用飞机乘客数据集

先决条件是将该数据集作为模型上载至 SAP Analytics Cloud,并将该特定模型分配至 R-Viz. 数据源。

下面的折线图显示了指定期间内飞机乘客的增长情况。准备分析某个时期的发展趋势时,折线图通常是首选。此外,当需要按某些变量(比如时间)比较数量的相对变化时,也适合绘制折线图。

plot(AirPassengers,type=”l”) #Simple Line Plot

条形图

条形图适合用于比较几组之间的累计总数。堆积图用于多个类别的条形图。使用 R 中的鸢尾花数据集

barplot(iris$Petal.Length) #Creating simple Bar Graph
barplot(iris$Sepal.Length,col = brewer.pal(3,”Set1″))
barplot(table(iris$Species,iris$Sepal.Length),col = brewer.pal(3,”Set1″)) #Stacked Plot

折线图和堆积柱状图还可用作在 SAP Analytics Cloud 中创建可视化对象的统计图类型。因此也可以将数据集直接上载到 SAP Analytics Cloud。

马赛克图

马赛克图可使用显示相对比例的数据,高效绘制分类数据图。

data(HairEyeColor)
> mosaicplot(HairEyeColor)

热图

热图可用于进行探索性数据分析,它以两个维作轴,并用颜色的深浅度显示第三个维。不过,你需要将数据集转换成矩阵格式。

使用 Cars93 数据集
> heatmap(as.matrix(mtcars))
你也可以对此类可视化对象使用如下的 image() 命令
> image(as.matrix(b[2:7]))