# Class: Statsample::Test::T::TwoSamplesIndependent

Inherits:
Object
• Object
show all
Includes:
DirtyMemoize, Math, Summarizable, Statsample::Test
Defined in:
lib/statsample/test/t.rb

## Overview

Two Sample t-test.

## Usage

``````a = Daru::Vector.new(1000.times.map {rand(100)})
b = Daru::Vector.new(1000.times.map {rand(100)})
t_2=Statsample::Test::T::TwoSamplesIndependent.new(a,b)
t_2.summary
``````

### Output

``````= Two Sample T Test
Mean and standard deviation
+----------+---------+---------+------+
| Variable |    m    |   sd    |  n   |
+----------+---------+---------+------+
| 1        | 49.3310 | 29.3042 | 1000 |
| 2        | 47.8180 | 28.8640 | 1000 |
+----------+---------+---------+------+

== Levene Test
Levene Test
F: 0.3596
p: 0.5488
T statistics
+--------------------+--------+-----------+----------------+
|        Type        |   t    |    df     | p (both tails) |
+--------------------+--------+-----------+----------------+
| Equal variance     | 1.1632 | 1998      | 0.2449         |
| Non equal variance | 1.1632 | 1997.5424 | 0.1362         |
+--------------------+--------+-----------+----------------+
``````

## Instance Attribute Summary collapse

Degress of freedom (equal variance).

Degress of freedom (not equal variance).

• Name of test.

• Options.

Probability(equal variance).

Probability(unequal variance).

Value of t for equal_variance.

Value of t for non-equal_variance.

• Tails for probability (:both, :left or :right).

## Instance Method Summary collapse

• Set t and probability for given u.

• Cohen's d is a measure of effect size.

• constructor

Create a Two Independent T Test Options: * :name = Name of the analysis * :tails = Tail for probability.

• :nodoc:.

#summary

## Constructor Details

### #initialize(v1, v2, opts = Hash.new) ⇒ TwoSamplesIndependent

Create a Two Independent T Test Options:

• :name = Name of the analysis

• :tails = Tail for probability. Could be :both, :left, :right

 ``` 256 257 258 259 260 261 262 263``` ```# File 'lib/statsample/test/t.rb', line 256 def initialize(v1, v2, opts=Hash.new) @v1=v1 @v2=v2 default={:u=>0, :name=>"Two Sample T Test", :tails=>:both} @opts=default.merge(opts) @name=@opts[:name] @tails=@opts[:tails] end```

## Instance Attribute Details

Degress of freedom (equal variance)

 ``` 234 235 236``` ```# File 'lib/statsample/test/t.rb', line 234 def df_equal_variance @df_equal_variance end```

Degress of freedom (not equal variance)

 ``` 236 237 238``` ```# File 'lib/statsample/test/t.rb', line 236 def df_not_equal_variance @df_not_equal_variance end```

### #name ⇒ Object

Name of test

 ``` 232 233 234``` ```# File 'lib/statsample/test/t.rb', line 232 def name @name end```

### #opts ⇒ Object

Options

 ``` 230 231 232``` ```# File 'lib/statsample/test/t.rb', line 230 def opts @opts end```

Probability(equal variance)

 ``` 242 243 244``` ```# File 'lib/statsample/test/t.rb', line 242 def probability_equal_variance @probability_equal_variance end```

Probability(unequal variance)

 ``` 244 245 246``` ```# File 'lib/statsample/test/t.rb', line 244 def probability_not_equal_variance @probability_not_equal_variance end```

Value of t for equal_variance

 ``` 238 239 240``` ```# File 'lib/statsample/test/t.rb', line 238 def t_equal_variance @t_equal_variance end```

Value of t for non-equal_variance

 ``` 240 241 242``` ```# File 'lib/statsample/test/t.rb', line 240 def t_not_equal_variance @t_not_equal_variance end```

### #tails ⇒ Object

Tails for probability (:both, :left or :right)

 ``` 246 247 248``` ```# File 'lib/statsample/test/t.rb', line 246 def tails @tails end```

## Instance Method Details

### #compute ⇒ Object

Set t and probability for given u

 ``` 266 267 268 269 270 271 272 273 274 275 276 277 278``` ```# File 'lib/statsample/test/t.rb', line 266 def compute @t_equal_variance= T.two_sample_independent(@v1.mean, @v2.mean, @v1.sd, @v2.sd, @v1.n_valid, @v2.n_valid,true) @t_not_equal_variance= T.two_sample_independent(@v1.mean, @v2.mean, @v1.sd, @v2.sd, @v1.n_valid, @v2.n_valid, false) @df_equal_variance=T.df_equal_variance(@v1.n_valid, @v2.n_valid) @df_not_equal_variance=T.df_not_equal_variance(@v1.sd, @v2.sd, @v1.n_valid, @v2.n_valid) @probability_equal_variance = p_using_cdf(Distribution::T.cdf(@t_equal_variance, @df_equal_variance), tails) @probability_not_equal_variance = p_using_cdf(Distribution::T.cdf(@t_not_equal_variance, @df_not_equal_variance), tails) end```

### #d ⇒ Object

Cohen's d is a measure of effect size. Its defined as the difference between two means divided by a standard deviation for the data

 ``` 280 281 282 283 284 285 286``` ```# File 'lib/statsample/test/t.rb', line 280 def d n1=@v1.n_valid n2=@v2.n_valid num=@v1.mean-@v2.mean den=Math::sqrt( ((n1-1)*@v1.sd+(n2-1)*@v2.sd).quo(n1+n2)) num.quo(den) end```

### #report_building(b) ⇒ Object

:nodoc:

 ``` 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305``` ```# File 'lib/statsample/test/t.rb', line 288 def report_building(b) # :nodoc: b.section(:name=>@name) {|g| g.table(:name=>_("Mean and standard deviation"), :header=>[_("Variable"), _("mean"), _("sd"),_("n")]) {|t| t.row([@v1.name,"%0.4f" % @v1.mean,"%0.4f" % @v1.sd, @v1.n_valid]) t.row([@v2.name,"%0.4f" % @v2.mean,"%0.4f" % @v2.sd, @v2.n_valid]) } g.parse_element(Statsample::Test.levene([@v1,@v2],:name=>_("Levene test for equality of variances"))) g.table(:name=>_("T statistics"),:header=>["Type","t","df", "p (#{tails} tails)"].map{|v| _(v)}) {|t| t.row([_("Equal variance"), "%0.4f" % t_equal_variance, df_equal_variance, "%0.4f" % probability_equal_variance]) t.row([_("Non equal variance"), "%0.4f" % t_not_equal_variance, "%0.4f" % df_not_equal_variance, "%0.4f" % probability_not_equal_variance]) } g.table(:name=>_("Effect size")) do |t| t.row ['x1-x2', "%0.4f" % (@v1.mean-@v2.mean)] t.row ['d', "%0.4f" % d] end } end```