人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

プロビット回帰分析を行うためのライブラリを紹介していただけますでしょうか。
言語はRubyまたはPHPでお願いします。

<参考サイト>
http://software.ssri.co.jp/ex2015/function/probit.html
http://hnami.or.tv/d/index.php?%A5%ED%A5%B8%A5%C3%A5%C8%CA%AC%C0%CF%A4%C8%A5%D7%A5%ED%A5%D3%A5%C3%A5%C8%CA%AC%C0%CF


●質問者: yoshi-ken
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● a-kuma3
●30ポイント

Ruby のライブラリは、これだと思います。

Statsample

http://ruby-statsample.rubyforge.org/
https://www.ruby-forum.com/topic/204692


ちらっと探した感じでは、API ドキュメント以外の情報が少ないなあ、という感じ。
多分、こんな感じで使うのだと思いますけど。

ds = ...
lr=Statsample::Regression.probit(ds,'y')
puts lr.summary

http://ruby-statsample.rubyforge.org/statsample/Statsample/Regression.html
http://ruby-statsample.rubyforge.org/statsample/Statsample/Regression/Multiple.html
http://ruby-statsample.rubyforge.org/statsample/Statsample/Regression.html#method-c-probit


yoshi-kenさんのコメント
いち早いご回答ありがとうございます! Statsampleにあるのですね、参考になりました。

2 ● suinger
●20ポイント

PHPですと統計関数あるけど公式でもドキュメント未整備の状態なので、非公式でもPHP単体でのプロット回帰分析のライブラリはなさそうです。
http://jp2.php.net/manual/ja/ref.stats.php

解決方法としては、Rで書かれたプログラムをPHPのproc_open関数/exec関数で外部コマンドとして利用すると言う手が現実的かと思います。
以下を参考にPHPからRを実行してみてはいかがでしょうか。

▽PHPとRの基本的な連携
http://mi2yo4.blog136.fc2.com/blog-entry-80.html
▽phpからRを使う
http://kokukuma.blogspot.jp/2011/11/phpr.html

▽R言語: logit法,probit法を用いてLD50等を求める
http://d.hatena.ne.jp/Rion778/20100612/1276358244


yoshi-kenさんのコメント
PHP版はメンテナンスもあまりされていないですし厳しそうですね。 https://pecl.php.net/package/stats PHPからRを呼び出す方法、参考になりました。 ありがとうございます。

3 ● dilutionist
●50ポイント ベストアンサー

gemでstatsampleを探せば気づくかと思いますが、statsample-glmというエクステンションがあります。
https://rubygems.org/gems/statsample-glm/

チュートリアルに従って同じデータでやるとこんな感じです。

require 'statsample-glm'
data_set = Statsample::CSV.read "logistic_mle.csv"
glm = Statsample::GLM.compute data_set, :y, :probit, {constant: 1, algorithm: :mle}

puts glm.coefficients
# =>
# 0.17626387151069672
# 0.44820871924236927
# -0.22399172305216722
# -3.0669209258136503

puts glm.standard_error
# =>
# 0.23849905071293545
# 0.2333719187111209
# 0.2149769013786397
# 1.0547761637565858

puts glm.log_likelihood
# => -38.315586790948004

[code]Generalized Linear Models: Introduction and Implementation in Ruby. - Travel <code> Music

ちなみに同じデータをRで扱うとこんな感じになります。
glm()はRにデフォルトで入っている関数です。

data_set <- read.csv("logistic_mle.csv")
attach(data_set)
model <- glm(formula = y ~ a + b + c, family = binomial(probit))
summary(model)

出力

Call:
glm(formula = y ~ a + b + c, family = binomial(probit))

Deviance Residuals: 
 Min 1Q Median 3Q Max 
-1.97570 -0.09687 -0.00083 0.11941 2.23066 

Coefficients:
 Estimate Std. Error z value Pr(>|z|) 
(Intercept) -3.0670 1.0556 -2.906 0.00367 **
a 0.1763 0.2387 0.739 0.46005 
b 0.4483 0.2335 1.920 0.05492 . 
c -0.2240 0.2151 -1.041 0.29767 
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

 Null deviance: 277.079 on 199 degrees of freedom
Residual deviance: 76.631 on 196 degrees of freedom
AIC: 84.631

Number of Fisher Scoring iterations: 8

yoshi-kenさんのコメント
実例コードとともに紹介して頂き、大変感謝しております。 まさにこれが求めていた物でした。ありがとうございます。 説明変数などを調整して試行錯誤してみようと思います。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ