【问题标题】:How to perform ANOVA in Spark Scala?如何在 Spark Scala 中执行方差分析?
【发布时间】:2017-06-13 05:02:09
【问题描述】:

所以我有这两个变量:

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。如何做到这一点?

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

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

我的 Spark 版本是 2.1.1。

【问题讨论】:

    标签: scala apache-spark statistics anova


    【解决方案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 中。

    【讨论】:

    猜你喜欢
    • 2018-05-16
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 2012-02-27
    • 2019-09-08
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多