Class: Statsample::Regression::Binomial::BaseEngine

Inherits:
Object
  • Object
show all
Defined in:
lib/statsample/regression/binomial.rb

Overview

Base Engine for binomial regression analysis. Use Statsample::Regression.logit and Statsample::Regression.probit for fast access methods.

Usage:

dataset=Statsample::CSV.read("data.csv")
y="y"
model=Statsample::MLE::Logit.new
lr=Statsample::Regression::Binomial::BaseEngine(dataset, y, model)

Direct Known Subclasses

Logit, Probit

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ds, y_var, model) ⇒ BaseEngine

Parameters

  • ds: Dataset

  • y_var: Name of dependent variable

  • model: One of Statsample::Regression::Binomial classes



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/statsample/regression/binomial.rb', line 19

def initialize(ds,y_var,model)
  @ds=ds
  @y_var=y_var
  @dy=@ds[@y_var]
  @ds_indep=ds.dup(ds.fields-[y_var])
  constant=([1.0]*ds.cases).to_vector(:scale)
  @ds_indep.add_vector("_constant",constant)
  mat_x=@ds_indep.to_matrix
  mat_y=@dy.to_matrix(:vertical)
  @fields=@ds_indep.fields
  @model=model
  coeffs=model.newton_raphson(mat_x, mat_y)
  @coeffs=assign_names(coeffs.column(0).to_a)
  @iterations=model.iterations
  @var_cov_matrix=model.var_cov_matrix
  @log_likehood=model.log_likehood(mat_x, mat_y, coeffs)
end

Instance Attribute Details

#iterationsObject (readonly)

Returns the value of attribute iterations.



14
15
16
# File 'lib/statsample/regression/binomial.rb', line 14

def iterations
  @iterations
end

#log_likehoodObject (readonly)

Returns the value of attribute log_likehood.



14
15
16
# File 'lib/statsample/regression/binomial.rb', line 14

def log_likehood
  @log_likehood
end

Instance Method Details

#assign_names(c) ⇒ Object

:nodoc:



62
63
64
65
66
67
68
# File 'lib/statsample/regression/binomial.rb', line 62

def assign_names(c) # :nodoc:
  a={}
  @fields.each_index do |i|
    a[@fields[i]]=c[i]
  end
  a
end

#coeffsObject

Regression coefficients



56
57
58
59
60
# File 'lib/statsample/regression/binomial.rb', line 56

def coeffs
  c=@coeffs.dup
  c.delete("_constant")
  c
end

#coeffs_seObject

Coefficients standard error



37
38
39
40
41
42
43
44
45
# File 'lib/statsample/regression/binomial.rb', line 37

def coeffs_se
  out={}
  @fields.each_index{|i|
    f=@fields[i]
    out[f]=Math::sqrt(@var_cov_matrix[i,i])
  }
  out.delete("_constant")
  out
end

#constantObject

Value of constant on regression



47
48
49
# File 'lib/statsample/regression/binomial.rb', line 47

def constant
  @coeffs['_constant']
end

#constant_seObject

Constant standard error



51
52
53
54
# File 'lib/statsample/regression/binomial.rb', line 51

def constant_se
  i=@fields.index :_constant
  Math::sqrt(@var_cov_matrix[i,i])
end