質問: Rで同様のJavaの線形回帰 > **可能重複:** > > より良い線形のための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ライブラリをチェックして、[より良い線形回帰のためのJavaライブラリがありますか? (例:反復的に最小二乗を再計算)](https://stackoverflow.com/questions/8406305/is-there-a-java-library-for-better-linear-regression-eg- iteratively reweigh )しかし、私の問題は、私のケースが単純な線形回帰か複数であるかどうかを特定できないということです。 `test_trait` contains height expressed from genetic trait `geno_A` and `geno_B`. `geno_A` and `geno_B` are alleles.
回答: 線形回帰 `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 []` がプロジェクトに十分な構造であれば、 [SimpleRegression](https://commons.apache.org/math/ Apache Commonsのapidocs/org/apache/commons/math3/stat/regression/SimpleRegression.html ) は、通常の場合にはおそらく適切です。