如何在Spark Scala中执行方差分析



所以我有这两个变量:

x: 1 0 1 1 0 1 1 0 ...

y: 4 3 12 9 2 7 23 ...

以前,我可以使用以下代码在R中执行方差分析:

stats <- anova( lm( as.matrix(y) ~ as.factor(x) ) )

它将给出以下结果:

> anova( lm( as.matrix(y) ~ as.factor(x) ) )
Analysis of Variance Table
Response: as.matrix(y)
               Df Sum Sq Mean Sq F value  Pr(>F)  
as.factor(x)   1   2020 2019.99  5.1431 0.02426 *
Residuals     231  90727  392.76                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

现在我想使用 Scala 代码将此代码转换为 Spark。怎么做?

我已经尝试过这个 API,但我很困惑,因为在该 API 中只接受 1 个变量作为输入,但R中的anova使用 2 个输入。

我也找到了这个 API,但它似乎是另一个 API 的前身。我对将xy作为输入的位置感到困惑。通常我们在API中有因变量和自变量,我们可以在其中放置输入,但我似乎在这里找不到它。

我的 Spark 版本是 2.1.1。

R中,您需要提供从 y ~ x 的映射,其中 y 是连续的,x 是分类变量。在您引用的Spark代码中也是如此:

val catTuple = spark.sql("select color, price from cars").toDF(colnames: _*).as[CatTuple]

这里color是分类变量,price是连续变量。

在第二个例子(奇怪的数据结构!(中,你需要提供一个Iterable[RDD[Double]],这意味着数据中的每个类别都应该放在一个单独的RDD中。

最新更新