0

重複の可能性:
線形回帰を改善するためのJavaライブラリはありますか?(たとえば、最小二乗法を繰り返し再重み付けします)

私は次のコードinfRを持っていますが、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ライブラリがありますか?(たとえば、最小二乗法を繰り返し再重み付けします)が、私の問題は、私のケースが単純な線形回帰なのか多重回帰なのかを識別できなかったことです。

test_traitgeno_A遺伝形質から表現された高さを含みますgeno_Bgeno_A対立遺伝子geno_Bです。

4

2 に答える 2

2

グーグルで検索するjava linear regressionと、いくつかの興味深いリンクが表示されます。その中には、次の SO の質問があります。

より良い線形回帰のための Java ライブラリはありますか? (例: 繰り返し再重み付けされた最小二乗法)

于 2013-01-29T09:52:03.213 に答える
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はおそらく最も一般的なケースに適しています。

于 2013-01-29T09:58:30.540 に答える