首页 文章

Java中的线性回归类似于R [duplicate]

提问于
浏览
0

可能重复:是否有更好的线性回归的Java库? (例如,迭代重加权最小二乘)

我有一个以下代码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 .

2 回答

  • 0

    线性回归 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可能适用于最常见的情况 .

  • 2

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

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

相关问题