【问题标题】:linear regression in Java similar in R [duplicate]Java中的线性回归类似于R [重复]
【发布时间】:2013-01-29 09:43:06
【问题描述】:

可能重复:
Is there a Java library for better linear regression? (E.g., iteratively reweighted least squares)

我有以下代码 inf R,但我需要在 java 中实现相同的东西。我数学不是很厉害,所以需要一些帮助。

test_trait <- c( -0.48812477 , 0.33458213, -0.52754476, -0.79863471, -0.68544309, -0.12970239,  0.02355622, -0.31890850,0.34725819 , 0.08108851)

geno_A <- as.factor(c("Sub_0001"=1, "Sub_0002"=0, "Sub_0003"=1, "Sub_0004"=2, "Sub_0005"=0, "Sub_0006"=0, "Sub_0007"=1, "Sub_0008"=0, "Sub_0009"=1, "Sub_0010"=0))

geno_B <- as.factor(c("Sub_0001"=0, "Sub_0002"=0, "Sub_0003"=0, "Sub_0004"=1, "Sub_0005"=1, "Sub_0006"=0, "Sub_0007"=0, "Sub_0008"=0, "Sub_0009"=0, "Sub_0010"=0) )

fit <- lm(test_trait ~ geno_A*geno_B)
res <- anova(fit)
p.value <- res[3,5]

编辑 1: 我在发布这个问题之前检查了 Apache Commons Math 库并检查了 Is there a Java library for better linear regression? (E.g., iteratively reweighted least squares) ,但我的问题是我无法确定我的情况是简单线性回归还是多重回归。

test_trait 包含由遗传特征geno_Ageno_B 表达的身高。 geno_Ageno_Balleles

【问题讨论】:

  • 尝试现有的answer
  • 我不知道这是简单的线性回归还是多元回归。

标签: java r linear-regression


【解决方案1】:

谷歌搜索java linear regression 引导我找到一些有趣的链接,其中这个 SO 问题:

Is there a Java library for better linear regression? (E.g., iteratively reweighted least squares)

【讨论】:

    【解决方案2】:

    线性回归y = a + b*x 可以使用以下等式计算:

    b = (n*Σ(X*Y) - (ΣX)*(ΣY)) / (n*Σ(X^2) - (ΣX)^2)
    a = (ΣY - b*(ΣX)) / n
    

    这里 Σ(A) 是 A 的所有可用值的总和,n - 这些值的数量(X,Y 对的数量)。

    如果需要直接对您的自定义数据结构进行回归,则可能首选自己的实现。库需要传递它支持的数据结构,可能需要克隆大量数据或以其他次优方式设计数据结构。

    另一方面,如果数据量不大或double[] 对您的项目来说结构足够好,则来自 Apache Commons 的SimpleRegression 可能适合最常见的情况。

    【讨论】:

    • 可能有几个 Java 库可以做到这一点,所以可能没有必要重新发明轮子。我链接的 SO 帖子已经提到了一些选项。
    • 在找到一个计算回归的库后,可能会要求该库计算平均值。证明库使用的合理性有一定的复杂性阈值,特别是如果该库是用另一种语言编写的。
    • 线性回归当然值得图书馆使用,重新实现已经编程的东西会浪费时间。同一个库可能也有计算平均值的函数。此外,我在下面链接的库是 Java 库,而不是 R。学习如何连接 Java 和 R 本身就很有趣,因为 R 中有更复杂的库。
    • SimpleRegression 来自 Apache Commons 可能可用于不需要非常自定义方法的情况。
    猜你喜欢
    • 2018-03-18
    • 2016-02-12
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2016-03-01
    • 2013-02-11
    相关资源
    最近更新 更多