Class: Statsample::Test::T::TwoSamplesIndependent
- 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
-
#df_equal_variance ⇒ Object
readonly
Degress of freedom (equal variance).
-
#df_not_equal_variance ⇒ Object
readonly
Degress of freedom (not equal variance).
-
#name ⇒ Object
Name of test.
-
#opts ⇒ Object
Options.
-
#probability_equal_variance ⇒ Object
readonly
Probability(equal variance).
-
#probability_not_equal_variance ⇒ Object
readonly
Probability(unequal variance).
-
#t_equal_variance ⇒ Object
readonly
Value of t for equal_variance.
-
#t_not_equal_variance ⇒ Object
readonly
Value of t for non-equal_variance.
-
#tails ⇒ Object
Tails for probability (:both, :left or :right).
Instance Method Summary collapse
-
#compute ⇒ Object
Set t and probability for given u.
-
#d ⇒ Object
Cohen’s d is a measure of effect size.
-
#initialize(v1, v2, opts = Hash.new) ⇒ TwoSamplesIndependent
constructor
Create a Two Independent T Test Options: * :name = Name of the analysis * :tails = Tail for probability.
-
#report_building(b) ⇒ Object
:nodoc:.
Methods included from Summarizable
Methods included from Statsample::Test
chi_square, levene, #p_using_cdf, #t_critical, t_one_sample, t_two_samples_independent, u_mannwhitney, wilcoxon_signed_rank, #z_critical
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
#df_equal_variance ⇒ Object (readonly)
Degress of freedom (equal variance)
234 235 236 |
# File 'lib/statsample/test/t.rb', line 234 def df_equal_variance @df_equal_variance end |
#df_not_equal_variance ⇒ Object (readonly)
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 |
#probability_equal_variance ⇒ Object (readonly)
Probability(equal variance)
242 243 244 |
# File 'lib/statsample/test/t.rb', line 242 def probability_equal_variance @probability_equal_variance end |
#probability_not_equal_variance ⇒ Object (readonly)
Probability(unequal variance)
244 245 246 |
# File 'lib/statsample/test/t.rb', line 244 def probability_not_equal_variance @probability_not_equal_variance end |
#t_equal_variance ⇒ Object (readonly)
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 |
#t_not_equal_variance ⇒ Object (readonly)
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 |