alglib 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -0
- data/Manifest.txt +253 -0
- data/README.txt +33 -0
- data/Rakefile +27 -0
- data/ext/Rakefile +24 -0
- data/ext/alglib.i +24 -0
- data/ext/alglib/Makefile +157 -0
- data/ext/alglib/airyf.cpp +372 -0
- data/ext/alglib/airyf.h +81 -0
- data/ext/alglib/alglib.cpp +8558 -0
- data/ext/alglib/alglib_util.cpp +19 -0
- data/ext/alglib/alglib_util.h +14 -0
- data/ext/alglib/ap.cpp +877 -0
- data/ext/alglib/ap.english.html +364 -0
- data/ext/alglib/ap.h +666 -0
- data/ext/alglib/ap.russian.html +442 -0
- data/ext/alglib/apvt.h +754 -0
- data/ext/alglib/bdss.cpp +1500 -0
- data/ext/alglib/bdss.h +251 -0
- data/ext/alglib/bdsvd.cpp +1339 -0
- data/ext/alglib/bdsvd.h +164 -0
- data/ext/alglib/bessel.cpp +1226 -0
- data/ext/alglib/bessel.h +331 -0
- data/ext/alglib/betaf.cpp +105 -0
- data/ext/alglib/betaf.h +74 -0
- data/ext/alglib/bidiagonal.cpp +1328 -0
- data/ext/alglib/bidiagonal.h +350 -0
- data/ext/alglib/binomialdistr.cpp +247 -0
- data/ext/alglib/binomialdistr.h +153 -0
- data/ext/alglib/blas.cpp +576 -0
- data/ext/alglib/blas.h +132 -0
- data/ext/alglib/cblas.cpp +226 -0
- data/ext/alglib/cblas.h +57 -0
- data/ext/alglib/cdet.cpp +138 -0
- data/ext/alglib/cdet.h +92 -0
- data/ext/alglib/chebyshev.cpp +216 -0
- data/ext/alglib/chebyshev.h +76 -0
- data/ext/alglib/chisquaredistr.cpp +157 -0
- data/ext/alglib/chisquaredistr.h +144 -0
- data/ext/alglib/cholesky.cpp +285 -0
- data/ext/alglib/cholesky.h +86 -0
- data/ext/alglib/cinverse.cpp +298 -0
- data/ext/alglib/cinverse.h +111 -0
- data/ext/alglib/clu.cpp +337 -0
- data/ext/alglib/clu.h +120 -0
- data/ext/alglib/correlation.cpp +280 -0
- data/ext/alglib/correlation.h +77 -0
- data/ext/alglib/correlationtests.cpp +726 -0
- data/ext/alglib/correlationtests.h +134 -0
- data/ext/alglib/crcond.cpp +826 -0
- data/ext/alglib/crcond.h +148 -0
- data/ext/alglib/creflections.cpp +310 -0
- data/ext/alglib/creflections.h +165 -0
- data/ext/alglib/csolve.cpp +312 -0
- data/ext/alglib/csolve.h +99 -0
- data/ext/alglib/ctrinverse.cpp +387 -0
- data/ext/alglib/ctrinverse.h +98 -0
- data/ext/alglib/ctrlinsolve.cpp +297 -0
- data/ext/alglib/ctrlinsolve.h +81 -0
- data/ext/alglib/dawson.cpp +234 -0
- data/ext/alglib/dawson.h +74 -0
- data/ext/alglib/descriptivestatistics.cpp +436 -0
- data/ext/alglib/descriptivestatistics.h +112 -0
- data/ext/alglib/det.cpp +140 -0
- data/ext/alglib/det.h +94 -0
- data/ext/alglib/dforest.cpp +1819 -0
- data/ext/alglib/dforest.h +316 -0
- data/ext/alglib/elliptic.cpp +497 -0
- data/ext/alglib/elliptic.h +217 -0
- data/ext/alglib/estnorm.cpp +429 -0
- data/ext/alglib/estnorm.h +107 -0
- data/ext/alglib/expintegrals.cpp +422 -0
- data/ext/alglib/expintegrals.h +108 -0
- data/ext/alglib/faq.english.html +258 -0
- data/ext/alglib/faq.russian.html +272 -0
- data/ext/alglib/fdistr.cpp +202 -0
- data/ext/alglib/fdistr.h +163 -0
- data/ext/alglib/fresnel.cpp +211 -0
- data/ext/alglib/fresnel.h +91 -0
- data/ext/alglib/gammaf.cpp +338 -0
- data/ext/alglib/gammaf.h +104 -0
- data/ext/alglib/gqgengauss.cpp +235 -0
- data/ext/alglib/gqgengauss.h +92 -0
- data/ext/alglib/gqgenhermite.cpp +268 -0
- data/ext/alglib/gqgenhermite.h +63 -0
- data/ext/alglib/gqgenjacobi.cpp +297 -0
- data/ext/alglib/gqgenjacobi.h +72 -0
- data/ext/alglib/gqgenlaguerre.cpp +265 -0
- data/ext/alglib/gqgenlaguerre.h +69 -0
- data/ext/alglib/gqgenlegendre.cpp +300 -0
- data/ext/alglib/gqgenlegendre.h +62 -0
- data/ext/alglib/gqgenlobatto.cpp +305 -0
- data/ext/alglib/gqgenlobatto.h +97 -0
- data/ext/alglib/gqgenradau.cpp +232 -0
- data/ext/alglib/gqgenradau.h +95 -0
- data/ext/alglib/hbisinv.cpp +480 -0
- data/ext/alglib/hbisinv.h +183 -0
- data/ext/alglib/hblas.cpp +228 -0
- data/ext/alglib/hblas.h +64 -0
- data/ext/alglib/hcholesky.cpp +339 -0
- data/ext/alglib/hcholesky.h +91 -0
- data/ext/alglib/hermite.cpp +114 -0
- data/ext/alglib/hermite.h +49 -0
- data/ext/alglib/hessenberg.cpp +370 -0
- data/ext/alglib/hessenberg.h +152 -0
- data/ext/alglib/hevd.cpp +247 -0
- data/ext/alglib/hevd.h +107 -0
- data/ext/alglib/hsschur.cpp +1316 -0
- data/ext/alglib/hsschur.h +108 -0
- data/ext/alglib/htridiagonal.cpp +734 -0
- data/ext/alglib/htridiagonal.h +180 -0
- data/ext/alglib/ialglib.cpp +6 -0
- data/ext/alglib/ialglib.h +9 -0
- data/ext/alglib/ibetaf.cpp +960 -0
- data/ext/alglib/ibetaf.h +125 -0
- data/ext/alglib/igammaf.cpp +430 -0
- data/ext/alglib/igammaf.h +157 -0
- data/ext/alglib/inv.cpp +274 -0
- data/ext/alglib/inv.h +115 -0
- data/ext/alglib/inverseupdate.cpp +480 -0
- data/ext/alglib/inverseupdate.h +185 -0
- data/ext/alglib/jacobianelliptic.cpp +164 -0
- data/ext/alglib/jacobianelliptic.h +94 -0
- data/ext/alglib/jarquebera.cpp +2271 -0
- data/ext/alglib/jarquebera.h +80 -0
- data/ext/alglib/kmeans.cpp +356 -0
- data/ext/alglib/kmeans.h +76 -0
- data/ext/alglib/laguerre.cpp +94 -0
- data/ext/alglib/laguerre.h +48 -0
- data/ext/alglib/lbfgs.cpp +1167 -0
- data/ext/alglib/lbfgs.h +218 -0
- data/ext/alglib/lda.cpp +434 -0
- data/ext/alglib/lda.h +133 -0
- data/ext/alglib/ldlt.cpp +1130 -0
- data/ext/alglib/ldlt.h +124 -0
- data/ext/alglib/leastsquares.cpp +1252 -0
- data/ext/alglib/leastsquares.h +290 -0
- data/ext/alglib/legendre.cpp +107 -0
- data/ext/alglib/legendre.h +49 -0
- data/ext/alglib/linreg.cpp +1185 -0
- data/ext/alglib/linreg.h +380 -0
- data/ext/alglib/logit.cpp +1523 -0
- data/ext/alglib/logit.h +333 -0
- data/ext/alglib/lq.cpp +399 -0
- data/ext/alglib/lq.h +160 -0
- data/ext/alglib/lu.cpp +462 -0
- data/ext/alglib/lu.h +119 -0
- data/ext/alglib/mannwhitneyu.cpp +4490 -0
- data/ext/alglib/mannwhitneyu.h +115 -0
- data/ext/alglib/minlm.cpp +918 -0
- data/ext/alglib/minlm.h +312 -0
- data/ext/alglib/mlpbase.cpp +3375 -0
- data/ext/alglib/mlpbase.h +589 -0
- data/ext/alglib/mlpe.cpp +1369 -0
- data/ext/alglib/mlpe.h +552 -0
- data/ext/alglib/mlptrain.cpp +1056 -0
- data/ext/alglib/mlptrain.h +283 -0
- data/ext/alglib/nearunityunit.cpp +91 -0
- data/ext/alglib/nearunityunit.h +17 -0
- data/ext/alglib/normaldistr.cpp +377 -0
- data/ext/alglib/normaldistr.h +175 -0
- data/ext/alglib/nsevd.cpp +1869 -0
- data/ext/alglib/nsevd.h +140 -0
- data/ext/alglib/pca.cpp +168 -0
- data/ext/alglib/pca.h +87 -0
- data/ext/alglib/poissondistr.cpp +143 -0
- data/ext/alglib/poissondistr.h +130 -0
- data/ext/alglib/polinterpolation.cpp +685 -0
- data/ext/alglib/polinterpolation.h +206 -0
- data/ext/alglib/psif.cpp +173 -0
- data/ext/alglib/psif.h +88 -0
- data/ext/alglib/qr.cpp +414 -0
- data/ext/alglib/qr.h +168 -0
- data/ext/alglib/ratinterpolation.cpp +134 -0
- data/ext/alglib/ratinterpolation.h +72 -0
- data/ext/alglib/rcond.cpp +705 -0
- data/ext/alglib/rcond.h +140 -0
- data/ext/alglib/reflections.cpp +504 -0
- data/ext/alglib/reflections.h +165 -0
- data/ext/alglib/rotations.cpp +473 -0
- data/ext/alglib/rotations.h +128 -0
- data/ext/alglib/rsolve.cpp +221 -0
- data/ext/alglib/rsolve.h +99 -0
- data/ext/alglib/sbisinv.cpp +217 -0
- data/ext/alglib/sbisinv.h +171 -0
- data/ext/alglib/sblas.cpp +185 -0
- data/ext/alglib/sblas.h +64 -0
- data/ext/alglib/schur.cpp +156 -0
- data/ext/alglib/schur.h +102 -0
- data/ext/alglib/sdet.cpp +193 -0
- data/ext/alglib/sdet.h +101 -0
- data/ext/alglib/sevd.cpp +116 -0
- data/ext/alglib/sevd.h +99 -0
- data/ext/alglib/sinverse.cpp +672 -0
- data/ext/alglib/sinverse.h +138 -0
- data/ext/alglib/spddet.cpp +138 -0
- data/ext/alglib/spddet.h +96 -0
- data/ext/alglib/spdgevd.cpp +842 -0
- data/ext/alglib/spdgevd.h +200 -0
- data/ext/alglib/spdinverse.cpp +509 -0
- data/ext/alglib/spdinverse.h +122 -0
- data/ext/alglib/spdrcond.cpp +421 -0
- data/ext/alglib/spdrcond.h +118 -0
- data/ext/alglib/spdsolve.cpp +275 -0
- data/ext/alglib/spdsolve.h +105 -0
- data/ext/alglib/spline2d.cpp +1192 -0
- data/ext/alglib/spline2d.h +301 -0
- data/ext/alglib/spline3.cpp +1264 -0
- data/ext/alglib/spline3.h +290 -0
- data/ext/alglib/srcond.cpp +595 -0
- data/ext/alglib/srcond.h +127 -0
- data/ext/alglib/ssolve.cpp +895 -0
- data/ext/alglib/ssolve.h +139 -0
- data/ext/alglib/stdafx.h +0 -0
- data/ext/alglib/stest.cpp +131 -0
- data/ext/alglib/stest.h +94 -0
- data/ext/alglib/studenttdistr.cpp +222 -0
- data/ext/alglib/studenttdistr.h +115 -0
- data/ext/alglib/studentttests.cpp +377 -0
- data/ext/alglib/studentttests.h +178 -0
- data/ext/alglib/svd.cpp +620 -0
- data/ext/alglib/svd.h +126 -0
- data/ext/alglib/tdbisinv.cpp +2608 -0
- data/ext/alglib/tdbisinv.h +228 -0
- data/ext/alglib/tdevd.cpp +1229 -0
- data/ext/alglib/tdevd.h +115 -0
- data/ext/alglib/tridiagonal.cpp +594 -0
- data/ext/alglib/tridiagonal.h +171 -0
- data/ext/alglib/trigintegrals.cpp +490 -0
- data/ext/alglib/trigintegrals.h +131 -0
- data/ext/alglib/trinverse.cpp +345 -0
- data/ext/alglib/trinverse.h +98 -0
- data/ext/alglib/trlinsolve.cpp +926 -0
- data/ext/alglib/trlinsolve.h +73 -0
- data/ext/alglib/tsort.cpp +405 -0
- data/ext/alglib/tsort.h +54 -0
- data/ext/alglib/variancetests.cpp +245 -0
- data/ext/alglib/variancetests.h +134 -0
- data/ext/alglib/wsr.cpp +6285 -0
- data/ext/alglib/wsr.h +96 -0
- data/ext/ap.i +97 -0
- data/ext/correlation.i +24 -0
- data/ext/extconf.rb +6 -0
- data/ext/logit.i +89 -0
- data/lib/alglib.rb +71 -0
- data/lib/alglib/correlation.rb +26 -0
- data/lib/alglib/linearregression.rb +63 -0
- data/lib/alglib/logit.rb +42 -0
- data/test/test_alglib.rb +52 -0
- data/test/test_correlation.rb +44 -0
- data/test/test_correlationtest.rb +45 -0
- data/test/test_linreg.rb +35 -0
- data/test/test_logit.rb +43 -0
- data/test/test_pca.rb +27 -0
- metadata +326 -0
data/lib/alglib/logit.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
module Alglib
|
2
|
+
class Logit
|
3
|
+
attr_reader :model, :cases, :ivars
|
4
|
+
# Creates a Logit object based on a Matrix
|
5
|
+
# EXAMPLE:
|
6
|
+
# require 'alglib'
|
7
|
+
# matrix=Matrix[[2,3,4],[2,5,5],[1,5,3],[4,6,5]]
|
8
|
+
# lr=Alglib::LinearRegression.build_from_matrix(matrix)
|
9
|
+
# => #<Alglib::LinearRegression:0x7ffaf6c05dc0 @model=#<Alglib_ext::LinearModel:0x7ffaf6c05e60>, @cases=4, @report=#<Alglib_ext::LrReport:0x7ffaf6c05e10>, @ivars=2>
|
10
|
+
# lr.coeffs
|
11
|
+
# => [0.585714285714286, -0.0142857142857142]
|
12
|
+
|
13
|
+
def self.build_from_matrix(matrix)
|
14
|
+
raise "Argument should be a matrix" unless matrix.is_a? Matrix
|
15
|
+
cases=matrix.row_size
|
16
|
+
ivars=matrix.column_size-1
|
17
|
+
lm=Alglib_ext::LogitModel.new
|
18
|
+
lr=Alglib_ext::MNLReport.new
|
19
|
+
nclasses=matrix.column(matrix.column_size-1).to_a.uniq.size
|
20
|
+
am=matrix.to_alglib_matrix
|
21
|
+
Alglib_ext::mnltrainh(am,cases,ivars,nclasses,lm,lr)
|
22
|
+
self.new(lm,lr,cases,ivars,nclasses)
|
23
|
+
end
|
24
|
+
# Use with care...
|
25
|
+
def initialize(lm,lr,cases,ivars,nclasses)
|
26
|
+
@model=lm
|
27
|
+
@report=lr
|
28
|
+
@cases=cases
|
29
|
+
@ivars=ivars
|
30
|
+
@nclasses=nclasses
|
31
|
+
end
|
32
|
+
def process(vector)
|
33
|
+
Alglib_ext.mnlprocess(@model,vector)
|
34
|
+
end
|
35
|
+
def unpack
|
36
|
+
a2d=Alglib_ext::Real2dArray.new
|
37
|
+
Alglib_ext::mnlunpack(@model, a2d,@ivars,@nclasses);
|
38
|
+
Alglib.real2darray_to_array(a2d)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
data/test/test_alglib.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../ext"))
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
begin
|
6
|
+
require 'statsample'
|
7
|
+
HAS_SS=true
|
8
|
+
rescue
|
9
|
+
HAS_SS=false
|
10
|
+
end
|
11
|
+
|
12
|
+
if(HAS_GSL.nil?)
|
13
|
+
begin
|
14
|
+
require 'rbgsl'
|
15
|
+
HAS_GSL=true
|
16
|
+
rescue
|
17
|
+
HAS_GSL=false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require "alglib"
|
22
|
+
require 'matrix'
|
23
|
+
class TestAlglib < Test::Unit::TestCase
|
24
|
+
def test_linear_regression
|
25
|
+
a=[1,3,2,4,3,5,4,6,5,7]
|
26
|
+
b=[3,3,4,4,5,5,6,6,4,4]
|
27
|
+
c=[11,22,30,40,50,65,78,79,99,100]
|
28
|
+
y=[3,4,5,6,7,8,9,10,20,30]
|
29
|
+
matrix=Matrix.columns([a,b,c,y])
|
30
|
+
lr=Alglib::LinearRegression.build_from_matrix(matrix)
|
31
|
+
assert_in_delta(0.695,lr.coeffs[0],0.001)
|
32
|
+
assert_in_delta(11.027,lr.constant,0.001)
|
33
|
+
assert_in_delta(1.785,lr.process([1,3,11]),0.001)
|
34
|
+
end
|
35
|
+
def test_array_to_real1darray
|
36
|
+
v=[1,2,3]
|
37
|
+
r1d=Alglib.array_to_real1darray(v)
|
38
|
+
assert_equal(3,r1d.size)
|
39
|
+
assert_equal(1,r1d[0])
|
40
|
+
assert_equal(2,r1d[1])
|
41
|
+
assert_equal(3,r1d[2])
|
42
|
+
end
|
43
|
+
def test_real2darray_to_array
|
44
|
+
m=Matrix[[0,3,4],[1,2,5],[3,5,6]]
|
45
|
+
v2=m.to_alglib_matrix
|
46
|
+
m2=Alglib.real2darray_to_array(v2)
|
47
|
+
assert_equal(3,m2.size)
|
48
|
+
assert_equal([0,3,4],m2[0])
|
49
|
+
assert_equal([1,2,5],m2[1])
|
50
|
+
assert_equal([3,5,6],m2[2])
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../ext"))
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
begin
|
6
|
+
require 'statsample'
|
7
|
+
HAS_SS=true
|
8
|
+
rescue
|
9
|
+
HAS_SS=false
|
10
|
+
end
|
11
|
+
|
12
|
+
if(HAS_GSL.nil?)
|
13
|
+
begin
|
14
|
+
require 'rbgsl'
|
15
|
+
HAS_GSL=true
|
16
|
+
rescue
|
17
|
+
HAS_GSL=false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require "alglib"
|
22
|
+
require 'matrix'
|
23
|
+
class TestAlglibCorrelation < Test::Unit::TestCase
|
24
|
+
def test_correlation
|
25
|
+
a=[1,2,3,6,7,9,0,10]
|
26
|
+
b=[2,5, 7,8,4,8, 0, 5]
|
27
|
+
|
28
|
+
if(HAS_GSL)
|
29
|
+
a_gsl=GSL::Vector.alloc(a)
|
30
|
+
b_gsl=GSL::Vector.alloc(b)
|
31
|
+
corr_expected=GSL::Stats::correlation(a_gsl, b_gsl)
|
32
|
+
corr_alglib=Alglib.pearson_correlation(a,b)
|
33
|
+
assert_equal(corr_expected,corr_alglib)
|
34
|
+
end
|
35
|
+
if(HAS_SS)
|
36
|
+
va=a.to_vector(:scale)
|
37
|
+
vb=b.to_vector(:scale)
|
38
|
+
corr_expected=Statsample::Bivariate::spearman(va, vb)
|
39
|
+
corr_alglib=Alglib.spearman_correlation(a,b)
|
40
|
+
assert_in_delta(corr_expected,corr_alglib,0.001)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../ext"))
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
begin
|
6
|
+
require 'statsample'
|
7
|
+
HAS_SS=true
|
8
|
+
rescue
|
9
|
+
HAS_SS=false
|
10
|
+
end
|
11
|
+
|
12
|
+
if(HAS_GSL.nil?)
|
13
|
+
begin
|
14
|
+
require 'rbgsl'
|
15
|
+
HAS_GSL=true
|
16
|
+
rescue
|
17
|
+
HAS_GSL=false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require "alglib"
|
22
|
+
require 'matrix'
|
23
|
+
class TestAlglibCorrelationTests < Test::Unit::TestCase
|
24
|
+
def test_pearson
|
25
|
+
a=[2,3,4,5,6,7,8,9 ,10,22,20]
|
26
|
+
b=[1,4,3,5,6,8,9,10,10,20,30]
|
27
|
+
r=Alglib.pearson_correlation(a,b)
|
28
|
+
t= Statsample::Bivariate.t_r(r, a.size)
|
29
|
+
out = Alglib.pearson_correlation_significance(r, a.size)
|
30
|
+
assert_in_delta(out[:both], Statsample::Bivariate.prop_pearson(t,a.size), 0.0001)
|
31
|
+
assert_in_delta(out[:left], Statsample::Bivariate.prop_pearson(t, a.size,:left), 0.0001)
|
32
|
+
assert_in_delta(out[:right], Statsample::Bivariate.prop_pearson(t,a.size, :right), 0.0001)
|
33
|
+
end
|
34
|
+
def test_spearman
|
35
|
+
a=[2,3,4,5,6,7,8,9 ,10,22,20]
|
36
|
+
b=[1,4,3,5,6,8,9,10,10,20,30]
|
37
|
+
r=Alglib.spearman_correlation(a,b)
|
38
|
+
t= Statsample::Bivariate.t_r(r, a.size)
|
39
|
+
out = Alglib.spearman_correlation_significance(r, a.size)
|
40
|
+
|
41
|
+
assert_in_delta(out[:both], Statsample::Bivariate.prop_pearson(t,a.size), 0.0001)
|
42
|
+
assert_in_delta(out[:left], Statsample::Bivariate.prop_pearson(t, a.size,:left), 0.0001)
|
43
|
+
assert_in_delta(out[:right], Statsample::Bivariate.prop_pearson(t,a.size, :right), 0.0001)
|
44
|
+
end
|
45
|
+
end
|
data/test/test_linreg.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../ext"))
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
begin
|
6
|
+
require 'statsample'
|
7
|
+
HAS_SS=true
|
8
|
+
rescue
|
9
|
+
HAS_SS=false
|
10
|
+
end
|
11
|
+
|
12
|
+
if(HAS_GSL.nil?)
|
13
|
+
begin
|
14
|
+
require 'rbgsl'
|
15
|
+
HAS_GSL=true
|
16
|
+
rescue
|
17
|
+
HAS_GSL=false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require "alglib"
|
22
|
+
require 'matrix'
|
23
|
+
class TestAlglibLinreg < Test::Unit::TestCase
|
24
|
+
def test_linear_regression
|
25
|
+
a=[1,3,2,4,3,5,4,6,5,7]
|
26
|
+
b=[3,3,4,4,5,5,6,6,4,4]
|
27
|
+
c=[11,22,30,40,50,65,78,79,99,100]
|
28
|
+
y=[3,4,5,6,7,8,9,10,20,30]
|
29
|
+
matrix=Matrix.columns([a,b,c,y])
|
30
|
+
lr=Alglib::LinearRegression.build_from_matrix(matrix)
|
31
|
+
assert_in_delta(0.695,lr.coeffs[0],0.001)
|
32
|
+
assert_in_delta(11.027,lr.constant,0.001)
|
33
|
+
assert_in_delta(1.785,lr.process([1,3,11]),0.001)
|
34
|
+
end
|
35
|
+
end
|
data/test/test_logit.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../ext"))
|
3
|
+
|
4
|
+
require "test/unit"
|
5
|
+
begin
|
6
|
+
require 'statsample'
|
7
|
+
HAS_SS=true
|
8
|
+
rescue
|
9
|
+
HAS_SS=false
|
10
|
+
end
|
11
|
+
|
12
|
+
if(HAS_GSL.nil?)
|
13
|
+
begin
|
14
|
+
require 'rbgsl'
|
15
|
+
HAS_GSL=true
|
16
|
+
rescue
|
17
|
+
HAS_GSL=false
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require "alglib"
|
22
|
+
require 'matrix'
|
23
|
+
class TestAlglib < Test::Unit::TestCase
|
24
|
+
def test_logit
|
25
|
+
a=[1,2,3,4,5,6,7,8,9,10]
|
26
|
+
b=[0,0,1,0,0,0,1,1,1,1]
|
27
|
+
matrix=Matrix.columns([a,b])
|
28
|
+
lr=Alglib::Logit.build_from_matrix(matrix)
|
29
|
+
end
|
30
|
+
def atest_logit_1
|
31
|
+
ds=Statsample::CSV.read(File.dirname(__FILE__)+"/sample_logit.csv")
|
32
|
+
ds['female'].recode! {|c|
|
33
|
+
c=='female' ? 1: 0
|
34
|
+
}
|
35
|
+
constant=[1]*(ds.cases)
|
36
|
+
matrix=Matrix.columns([ds['female'].data,ds['hon'].data])
|
37
|
+
lr=Alglib::Logit.build_from_matrix(matrix)
|
38
|
+
lr.unpack
|
39
|
+
matrix=Matrix.columns([ds['math'].data, ds['female'].data,ds['read'].data, ds['hon'].data])
|
40
|
+
lr=Alglib::Logit.build_from_matrix(matrix)
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
data/test/test_pca.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../lib"))
|
2
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__)+"/../ext"))
|
3
|
+
require "test/unit"
|
4
|
+
require "alglib"
|
5
|
+
require 'matrix'
|
6
|
+
class TestAlglibPca < Test::Unit::TestCase
|
7
|
+
def test_pca
|
8
|
+
a=[10,20,30,40,50,60,70,80,90,100]
|
9
|
+
b=[1.2,2.3,3.4,4,5,6,7,8,9,10]
|
10
|
+
c=[6,8,3,6,8,2,3,9,10,1]
|
11
|
+
d=[61,82,31,62,86,21,33,99,101,12]
|
12
|
+
matrix=Matrix.columns([a,b,c,d])
|
13
|
+
input_2d_array=matrix.to_alglib_matrix
|
14
|
+
npoints=a.size
|
15
|
+
nvars=4
|
16
|
+
info=1
|
17
|
+
s2=Alglib_ext::Real1dArray.new
|
18
|
+
v=Alglib_ext::Real2dArray.new
|
19
|
+
a=Alglib_ext.pcabuildbasis(input_2d_array,npoints,nvars, s2,v)
|
20
|
+
comp=s2.to_a
|
21
|
+
sum=comp.inject{|a,val| a+val}
|
22
|
+
|
23
|
+
new=comp.collect{|val| (4.0*val).quo(sum)}
|
24
|
+
p new
|
25
|
+
p v.to_2d_a
|
26
|
+
end
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,326 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alglib
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Claudio Bustos
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-10-06 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: hoe
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.3.3
|
24
|
+
version:
|
25
|
+
description: ALGLIB - is a multilingual collection of algorithms designed to solve problems in the field of numeric analysis and data processing. ALGLIB is distributed under a 3-clause BSD license. This license is unrestrictive and allows using the package both in open and proprietary programs and even relicensing the code (if the new license doesn't conflict with the terms of the 3-clause BSD license).
|
26
|
+
email:
|
27
|
+
- clbustos@gmail.com
|
28
|
+
executables: []
|
29
|
+
|
30
|
+
extensions:
|
31
|
+
- ext/extconf.rb
|
32
|
+
extra_rdoc_files:
|
33
|
+
- History.txt
|
34
|
+
- Manifest.txt
|
35
|
+
- README.txt
|
36
|
+
files:
|
37
|
+
- History.txt
|
38
|
+
- Manifest.txt
|
39
|
+
- README.txt
|
40
|
+
- Rakefile
|
41
|
+
- ext/Rakefile
|
42
|
+
- ext/alglib.i
|
43
|
+
- ext/alglib/airyf.cpp
|
44
|
+
- ext/alglib/airyf.h
|
45
|
+
- ext/alglib/alglib.cpp
|
46
|
+
- ext/alglib/alglib_util.cpp
|
47
|
+
- ext/alglib/alglib_util.h
|
48
|
+
- ext/alglib/ap.cpp
|
49
|
+
- ext/alglib/ap.english.html
|
50
|
+
- ext/alglib/ap.h
|
51
|
+
- ext/alglib/ap.russian.html
|
52
|
+
- ext/alglib/apvt.h
|
53
|
+
- ext/alglib/bdss.cpp
|
54
|
+
- ext/alglib/bdss.h
|
55
|
+
- ext/alglib/bdsvd.cpp
|
56
|
+
- ext/alglib/bdsvd.h
|
57
|
+
- ext/alglib/bessel.cpp
|
58
|
+
- ext/alglib/bessel.h
|
59
|
+
- ext/alglib/betaf.cpp
|
60
|
+
- ext/alglib/betaf.h
|
61
|
+
- ext/alglib/bidiagonal.cpp
|
62
|
+
- ext/alglib/bidiagonal.h
|
63
|
+
- ext/alglib/binomialdistr.cpp
|
64
|
+
- ext/alglib/binomialdistr.h
|
65
|
+
- ext/alglib/blas.cpp
|
66
|
+
- ext/alglib/blas.h
|
67
|
+
- ext/alglib/cblas.cpp
|
68
|
+
- ext/alglib/cblas.h
|
69
|
+
- ext/alglib/cdet.cpp
|
70
|
+
- ext/alglib/cdet.h
|
71
|
+
- ext/alglib/chebyshev.cpp
|
72
|
+
- ext/alglib/chebyshev.h
|
73
|
+
- ext/alglib/chisquaredistr.cpp
|
74
|
+
- ext/alglib/chisquaredistr.h
|
75
|
+
- ext/alglib/cholesky.cpp
|
76
|
+
- ext/alglib/cholesky.h
|
77
|
+
- ext/alglib/cinverse.cpp
|
78
|
+
- ext/alglib/cinverse.h
|
79
|
+
- ext/alglib/clu.cpp
|
80
|
+
- ext/alglib/clu.h
|
81
|
+
- ext/alglib/correlation.cpp
|
82
|
+
- ext/alglib/correlation.h
|
83
|
+
- ext/alglib/correlationtests.cpp
|
84
|
+
- ext/alglib/correlationtests.h
|
85
|
+
- ext/alglib/crcond.cpp
|
86
|
+
- ext/alglib/crcond.h
|
87
|
+
- ext/alglib/creflections.cpp
|
88
|
+
- ext/alglib/creflections.h
|
89
|
+
- ext/alglib/csolve.cpp
|
90
|
+
- ext/alglib/csolve.h
|
91
|
+
- ext/alglib/ctrinverse.cpp
|
92
|
+
- ext/alglib/ctrinverse.h
|
93
|
+
- ext/alglib/ctrlinsolve.cpp
|
94
|
+
- ext/alglib/ctrlinsolve.h
|
95
|
+
- ext/alglib/dawson.cpp
|
96
|
+
- ext/alglib/dawson.h
|
97
|
+
- ext/alglib/descriptivestatistics.cpp
|
98
|
+
- ext/alglib/descriptivestatistics.h
|
99
|
+
- ext/alglib/det.cpp
|
100
|
+
- ext/alglib/det.h
|
101
|
+
- ext/alglib/dforest.cpp
|
102
|
+
- ext/alglib/dforest.h
|
103
|
+
- ext/alglib/elliptic.cpp
|
104
|
+
- ext/alglib/elliptic.h
|
105
|
+
- ext/alglib/estnorm.cpp
|
106
|
+
- ext/alglib/estnorm.h
|
107
|
+
- ext/alglib/expintegrals.cpp
|
108
|
+
- ext/alglib/expintegrals.h
|
109
|
+
- ext/alglib/faq.english.html
|
110
|
+
- ext/alglib/faq.russian.html
|
111
|
+
- ext/alglib/fdistr.cpp
|
112
|
+
- ext/alglib/fdistr.h
|
113
|
+
- ext/alglib/fresnel.cpp
|
114
|
+
- ext/alglib/fresnel.h
|
115
|
+
- ext/alglib/gammaf.cpp
|
116
|
+
- ext/alglib/gammaf.h
|
117
|
+
- ext/alglib/gqgengauss.cpp
|
118
|
+
- ext/alglib/gqgengauss.h
|
119
|
+
- ext/alglib/gqgenhermite.cpp
|
120
|
+
- ext/alglib/gqgenhermite.h
|
121
|
+
- ext/alglib/gqgenjacobi.cpp
|
122
|
+
- ext/alglib/gqgenjacobi.h
|
123
|
+
- ext/alglib/gqgenlaguerre.cpp
|
124
|
+
- ext/alglib/gqgenlaguerre.h
|
125
|
+
- ext/alglib/gqgenlegendre.cpp
|
126
|
+
- ext/alglib/gqgenlegendre.h
|
127
|
+
- ext/alglib/gqgenlobatto.cpp
|
128
|
+
- ext/alglib/gqgenlobatto.h
|
129
|
+
- ext/alglib/gqgenradau.cpp
|
130
|
+
- ext/alglib/gqgenradau.h
|
131
|
+
- ext/alglib/hbisinv.cpp
|
132
|
+
- ext/alglib/hbisinv.h
|
133
|
+
- ext/alglib/hblas.cpp
|
134
|
+
- ext/alglib/hblas.h
|
135
|
+
- ext/alglib/hcholesky.cpp
|
136
|
+
- ext/alglib/hcholesky.h
|
137
|
+
- ext/alglib/hermite.cpp
|
138
|
+
- ext/alglib/hermite.h
|
139
|
+
- ext/alglib/hessenberg.cpp
|
140
|
+
- ext/alglib/hessenberg.h
|
141
|
+
- ext/alglib/hevd.cpp
|
142
|
+
- ext/alglib/hevd.h
|
143
|
+
- ext/alglib/hsschur.cpp
|
144
|
+
- ext/alglib/hsschur.h
|
145
|
+
- ext/alglib/htridiagonal.cpp
|
146
|
+
- ext/alglib/htridiagonal.h
|
147
|
+
- ext/alglib/ialglib.cpp
|
148
|
+
- ext/alglib/ialglib.h
|
149
|
+
- ext/alglib/ibetaf.cpp
|
150
|
+
- ext/alglib/ibetaf.h
|
151
|
+
- ext/alglib/igammaf.cpp
|
152
|
+
- ext/alglib/igammaf.h
|
153
|
+
- ext/alglib/inv.cpp
|
154
|
+
- ext/alglib/inv.h
|
155
|
+
- ext/alglib/inverseupdate.cpp
|
156
|
+
- ext/alglib/inverseupdate.h
|
157
|
+
- ext/alglib/jacobianelliptic.cpp
|
158
|
+
- ext/alglib/jacobianelliptic.h
|
159
|
+
- ext/alglib/jarquebera.cpp
|
160
|
+
- ext/alglib/jarquebera.h
|
161
|
+
- ext/alglib/kmeans.cpp
|
162
|
+
- ext/alglib/kmeans.h
|
163
|
+
- ext/alglib/laguerre.cpp
|
164
|
+
- ext/alglib/laguerre.h
|
165
|
+
- ext/alglib/lbfgs.cpp
|
166
|
+
- ext/alglib/lbfgs.h
|
167
|
+
- ext/alglib/lda.cpp
|
168
|
+
- ext/alglib/lda.h
|
169
|
+
- ext/alglib/ldlt.cpp
|
170
|
+
- ext/alglib/ldlt.h
|
171
|
+
- ext/alglib/leastsquares.cpp
|
172
|
+
- ext/alglib/leastsquares.h
|
173
|
+
- ext/alglib/legendre.cpp
|
174
|
+
- ext/alglib/legendre.h
|
175
|
+
- ext/alglib/linreg.cpp
|
176
|
+
- ext/alglib/linreg.h
|
177
|
+
- ext/alglib/logit.cpp
|
178
|
+
- ext/alglib/logit.h
|
179
|
+
- ext/alglib/lq.cpp
|
180
|
+
- ext/alglib/lq.h
|
181
|
+
- ext/alglib/lu.cpp
|
182
|
+
- ext/alglib/lu.h
|
183
|
+
- ext/alglib/Makefile
|
184
|
+
- ext/alglib/mannwhitneyu.cpp
|
185
|
+
- ext/alglib/mannwhitneyu.h
|
186
|
+
- ext/alglib/minlm.cpp
|
187
|
+
- ext/alglib/minlm.h
|
188
|
+
- ext/alglib/mlpbase.cpp
|
189
|
+
- ext/alglib/mlpbase.h
|
190
|
+
- ext/alglib/mlpe.cpp
|
191
|
+
- ext/alglib/mlpe.h
|
192
|
+
- ext/alglib/mlptrain.cpp
|
193
|
+
- ext/alglib/mlptrain.h
|
194
|
+
- ext/alglib/nearunityunit.cpp
|
195
|
+
- ext/alglib/nearunityunit.h
|
196
|
+
- ext/alglib/normaldistr.cpp
|
197
|
+
- ext/alglib/normaldistr.h
|
198
|
+
- ext/alglib/nsevd.cpp
|
199
|
+
- ext/alglib/nsevd.h
|
200
|
+
- ext/alglib/pca.cpp
|
201
|
+
- ext/alglib/pca.h
|
202
|
+
- ext/alglib/poissondistr.cpp
|
203
|
+
- ext/alglib/poissondistr.h
|
204
|
+
- ext/alglib/polinterpolation.cpp
|
205
|
+
- ext/alglib/polinterpolation.h
|
206
|
+
- ext/alglib/psif.cpp
|
207
|
+
- ext/alglib/psif.h
|
208
|
+
- ext/alglib/qr.cpp
|
209
|
+
- ext/alglib/qr.h
|
210
|
+
- ext/alglib/ratinterpolation.cpp
|
211
|
+
- ext/alglib/ratinterpolation.h
|
212
|
+
- ext/alglib/rcond.cpp
|
213
|
+
- ext/alglib/rcond.h
|
214
|
+
- ext/alglib/reflections.cpp
|
215
|
+
- ext/alglib/reflections.h
|
216
|
+
- ext/alglib/rotations.cpp
|
217
|
+
- ext/alglib/rotations.h
|
218
|
+
- ext/alglib/rsolve.cpp
|
219
|
+
- ext/alglib/rsolve.h
|
220
|
+
- ext/alglib/sbisinv.cpp
|
221
|
+
- ext/alglib/sbisinv.h
|
222
|
+
- ext/alglib/sblas.cpp
|
223
|
+
- ext/alglib/sblas.h
|
224
|
+
- ext/alglib/schur.cpp
|
225
|
+
- ext/alglib/schur.h
|
226
|
+
- ext/alglib/sdet.cpp
|
227
|
+
- ext/alglib/sdet.h
|
228
|
+
- ext/alglib/sevd.cpp
|
229
|
+
- ext/alglib/sevd.h
|
230
|
+
- ext/alglib/sinverse.cpp
|
231
|
+
- ext/alglib/sinverse.h
|
232
|
+
- ext/alglib/spddet.cpp
|
233
|
+
- ext/alglib/spddet.h
|
234
|
+
- ext/alglib/spdgevd.cpp
|
235
|
+
- ext/alglib/spdgevd.h
|
236
|
+
- ext/alglib/spdinverse.cpp
|
237
|
+
- ext/alglib/spdinverse.h
|
238
|
+
- ext/alglib/spdrcond.cpp
|
239
|
+
- ext/alglib/spdrcond.h
|
240
|
+
- ext/alglib/spdsolve.cpp
|
241
|
+
- ext/alglib/spdsolve.h
|
242
|
+
- ext/alglib/spline2d.cpp
|
243
|
+
- ext/alglib/spline2d.h
|
244
|
+
- ext/alglib/spline3.cpp
|
245
|
+
- ext/alglib/spline3.h
|
246
|
+
- ext/alglib/srcond.cpp
|
247
|
+
- ext/alglib/srcond.h
|
248
|
+
- ext/alglib/ssolve.cpp
|
249
|
+
- ext/alglib/ssolve.h
|
250
|
+
- ext/alglib/stdafx.h
|
251
|
+
- ext/alglib/stest.cpp
|
252
|
+
- ext/alglib/stest.h
|
253
|
+
- ext/alglib/studenttdistr.cpp
|
254
|
+
- ext/alglib/studenttdistr.h
|
255
|
+
- ext/alglib/studentttests.cpp
|
256
|
+
- ext/alglib/studentttests.h
|
257
|
+
- ext/alglib/svd.cpp
|
258
|
+
- ext/alglib/svd.h
|
259
|
+
- ext/alglib/tdbisinv.cpp
|
260
|
+
- ext/alglib/tdbisinv.h
|
261
|
+
- ext/alglib/tdevd.cpp
|
262
|
+
- ext/alglib/tdevd.h
|
263
|
+
- ext/alglib/tridiagonal.cpp
|
264
|
+
- ext/alglib/tridiagonal.h
|
265
|
+
- ext/alglib/trigintegrals.cpp
|
266
|
+
- ext/alglib/trigintegrals.h
|
267
|
+
- ext/alglib/trinverse.cpp
|
268
|
+
- ext/alglib/trinverse.h
|
269
|
+
- ext/alglib/trlinsolve.cpp
|
270
|
+
- ext/alglib/trlinsolve.h
|
271
|
+
- ext/alglib/tsort.cpp
|
272
|
+
- ext/alglib/tsort.h
|
273
|
+
- ext/alglib/variancetests.cpp
|
274
|
+
- ext/alglib/variancetests.h
|
275
|
+
- ext/alglib/wsr.cpp
|
276
|
+
- ext/alglib/wsr.h
|
277
|
+
- ext/ap.i
|
278
|
+
- ext/correlation.i
|
279
|
+
- ext/extconf.rb
|
280
|
+
- ext/logit.i
|
281
|
+
- lib/alglib.rb
|
282
|
+
- lib/alglib/correlation.rb
|
283
|
+
- lib/alglib/linearregression.rb
|
284
|
+
- lib/alglib/logit.rb
|
285
|
+
- test/test_alglib.rb
|
286
|
+
- test/test_correlation.rb
|
287
|
+
- test/test_correlationtest.rb
|
288
|
+
- test/test_linreg.rb
|
289
|
+
- test/test_logit.rb
|
290
|
+
has_rdoc: true
|
291
|
+
homepage: http://rubyforge.org/projects/ruby-statsample/
|
292
|
+
licenses: []
|
293
|
+
|
294
|
+
post_install_message:
|
295
|
+
rdoc_options:
|
296
|
+
- --main
|
297
|
+
- README.txt
|
298
|
+
require_paths:
|
299
|
+
- lib
|
300
|
+
- ext
|
301
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
302
|
+
requirements:
|
303
|
+
- - ">="
|
304
|
+
- !ruby/object:Gem::Version
|
305
|
+
version: "0"
|
306
|
+
version:
|
307
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
308
|
+
requirements:
|
309
|
+
- - ">="
|
310
|
+
- !ruby/object:Gem::Version
|
311
|
+
version: "0"
|
312
|
+
version:
|
313
|
+
requirements: []
|
314
|
+
|
315
|
+
rubyforge_project: ruby-statsample
|
316
|
+
rubygems_version: 1.3.5
|
317
|
+
signing_key:
|
318
|
+
specification_version: 3
|
319
|
+
summary: ALGLIB - is a multilingual collection of algorithms designed to solve problems in the field of numeric analysis and data processing
|
320
|
+
test_files:
|
321
|
+
- test/test_correlation.rb
|
322
|
+
- test/test_correlationtest.rb
|
323
|
+
- test/test_alglib.rb
|
324
|
+
- test/test_pca.rb
|
325
|
+
- test/test_logit.rb
|
326
|
+
- test/test_linreg.rb
|