R Type Providerで回帰分析
F#上でRを使って回帰するにはどうしたらええんじゃい?ってのを簡易メモ。
実行前に#rつかってRProvider & RDotNetにリファレンス張る必要がある。
流れとしては
- リファレンス張って〜
- 回帰(R.lm)して〜
- 結果(R.summary)表示
って感じ。最後のsummaryの結果は
R.``[[``(hogehoge, 4).AsNumericMatrix()
としてRDotNETの行列オブジェクトとして戻せばいいかな?
> open RProvider;; > open RProvider.``base``;; > open RProvider.stats;; > open RProvider.datasets;; > let result = R.lm("Sepal.Length~Sepal.Width+Petal.Length", R.iris);; val result : RDotNet.SymbolicExpression > R.summary(result) |> R.print;; Call: stats::lm(formula = fsr_20456_1, data = fsr_20456_2) Residuals: Min 1Q Median 3Q Max -0.96159 -0.23489 0.00077 0.21453 0.78557 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 2.24914 0.24797 9.07 7.04e-16 *** Sepal.Width 0.59552 0.06933 8.59 1.16e-14 *** Petal.Length 0.47192 0.01712 27.57 < 2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.3333 on 147 degrees of freedom Multiple R-squared: 0.8402, Adjusted R-squared: 0.838 F-statistic: 386.4 on 2 and 147 DF, p-value: < 2.2e-16 val it : RDotNet.SymbolicExpression = RDotNet.SymbolicExpression {Engine = RDotNet.REngine; IsClosed = false; IsInvalid = false; IsProtected = true; Type = List;} >