statsample 1.4.3 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +8 -0
- data/benchmarks/correlation_matrix_15_variables.rb +1 -1
- data/benchmarks/correlation_matrix_5_variables.rb +1 -1
- data/benchmarks/correlation_matrix_methods/correlation_matrix.rb +2 -2
- data/examples/dataset.rb +2 -2
- data/examples/icc.rb +1 -1
- data/examples/levene.rb +2 -2
- data/examples/parallel_analysis.rb +1 -1
- data/examples/u_test.rb +2 -2
- data/examples/vector.rb +1 -1
- data/examples/velicer_map_test.rb +1 -1
- data/lib/statsample.rb +30 -4
- data/lib/statsample/anova/oneway.rb +3 -3
- data/lib/statsample/anova/twoway.rb +3 -3
- data/lib/statsample/bivariate.rb +7 -7
- data/lib/statsample/bivariate/pearson.rb +2 -2
- data/lib/statsample/converter/csv.rb +1 -1
- data/lib/statsample/converters.rb +7 -7
- data/lib/statsample/dataset.rb +8 -8
- data/lib/statsample/dominanceanalysis.rb +4 -4
- data/lib/statsample/dominanceanalysis/bootstrap.rb +8 -8
- data/lib/statsample/factor.rb +2 -4
- data/lib/statsample/factor/map.rb +2 -1
- data/lib/statsample/factor/parallelanalysis.rb +2 -2
- data/lib/statsample/factor/pca.rb +2 -2
- data/lib/statsample/factor/principalaxis.rb +2 -2
- data/lib/statsample/graph/boxplot.rb +4 -4
- data/lib/statsample/graph/histogram.rb +2 -2
- data/lib/statsample/graph/scatterplot.rb +4 -4
- data/lib/statsample/matrix.rb +20 -6
- data/lib/statsample/regression.rb +2 -2
- data/lib/statsample/regression/multiple.rb +3 -3
- data/lib/statsample/regression/multiple/alglibengine.rb +5 -5
- data/lib/statsample/regression/multiple/baseengine.rb +3 -3
- data/lib/statsample/regression/multiple/gslengine.rb +5 -5
- data/lib/statsample/regression/multiple/rubyengine.rb +4 -4
- data/lib/statsample/reliability/icc.rb +1 -1
- data/lib/statsample/reliability/multiscaleanalysis.rb +4 -4
- data/lib/statsample/reliability/scaleanalysis.rb +6 -6
- data/lib/statsample/reliability/skillscaleanalysis.rb +1 -1
- data/lib/statsample/resample.rb +1 -1
- data/lib/statsample/shorthand.rb +1 -1
- data/lib/statsample/test/bartlettsphericity.rb +1 -1
- data/lib/statsample/test/levene.rb +4 -4
- data/lib/statsample/test/t.rb +3 -3
- data/lib/statsample/test/umannwhitney.rb +2 -2
- data/lib/statsample/vector.rb +103 -80
- data/lib/statsample/vector/gsl.rb +16 -16
- data/lib/statsample/version.rb +1 -1
- data/test/test_analysis.rb +1 -1
- data/test/test_anova_contrast.rb +4 -4
- data/test/test_anovatwowaywithdataset.rb +1 -1
- data/test/test_anovawithvectors.rb +6 -6
- data/test/test_awesome_print_bug.rb +1 -1
- data/test/test_bartlettsphericity.rb +3 -3
- data/test/test_bivariate.rb +38 -38
- data/test/test_crosstab.rb +2 -2
- data/test/test_csv.rb +6 -6
- data/test/test_dataset.rb +79 -79
- data/test/test_factor.rb +55 -49
- data/test/test_factor_pa.rb +4 -4
- data/test/test_ggobi.rb +3 -3
- data/test/test_gsl.rb +3 -3
- data/test/test_histogram.rb +3 -3
- data/test/test_matrix.rb +5 -5
- data/test/test_multiset.rb +19 -19
- data/test/test_regression.rb +27 -27
- data/test/test_reliability.rb +14 -14
- data/test/test_reliability_icc.rb +7 -7
- data/test/test_reliability_skillscale.rb +6 -6
- data/test/test_resample.rb +1 -1
- data/test/test_rserve_extension.rb +4 -4
- data/test/test_statistics.rb +5 -5
- data/test/test_stest.rb +8 -8
- data/test/test_stratified.rb +3 -3
- data/test/test_test_t.rb +5 -5
- data/test/test_umannwhitney.rb +2 -2
- data/test/test_vector.rb +153 -119
- data/test/test_wilcoxonsignedrank.rb +4 -4
- data/test/test_xls.rb +6 -6
- metadata +3 -53
data/lib/statsample/factor.rb
CHANGED
@@ -34,7 +34,7 @@ module Statsample
|
|
34
34
|
# matrix is not appropriate for factor analysis."
|
35
35
|
#
|
36
36
|
def self.anti_image_covariance_matrix(matrix)
|
37
|
-
s2=Matrix.
|
37
|
+
s2=Matrix.diagonal(*(matrix.inverse.diagonal)).inverse
|
38
38
|
aicm=(s2)*matrix.inverse*(s2)
|
39
39
|
aicm.extend(Statsample::CovariateMatrix)
|
40
40
|
aicm.fields=matrix.fields if matrix.respond_to? :fields
|
@@ -42,13 +42,12 @@ module Statsample
|
|
42
42
|
end
|
43
43
|
def self.anti_image_correlation_matrix(matrix)
|
44
44
|
matrix=matrix.to_matrix
|
45
|
-
s=Matrix.
|
45
|
+
s=Matrix.diagonal(*(matrix.inverse.diagonal)).sqrt.inverse
|
46
46
|
aicm=s*matrix.inverse*s
|
47
47
|
|
48
48
|
aicm.extend(Statsample::CovariateMatrix)
|
49
49
|
aicm.fields=matrix.fields if matrix.respond_to? :fields
|
50
50
|
aicm
|
51
|
-
|
52
51
|
end
|
53
52
|
|
54
53
|
# Kaiser-Meyer-Olkin measure of sampling adequacy for correlation matrix.
|
@@ -101,6 +100,5 @@ module Statsample
|
|
101
100
|
end
|
102
101
|
sum_r.quo(sum_r+sum_q)
|
103
102
|
end
|
104
|
-
|
105
103
|
end
|
106
104
|
end
|
@@ -75,7 +75,8 @@ module Statsample
|
|
75
75
|
|
76
76
|
(ncol-1).times do |m|
|
77
77
|
puts "MAP:Eigenvalue #{m+1}" if $DEBUG
|
78
|
-
a=loadings[0..(loadings.row_size-1),0..m]
|
78
|
+
a=use_gsl ? loadings[0..(loadings.row_size-1),0..m] :
|
79
|
+
loadings.minor(0..(loadings.row_size-1),0..m)
|
79
80
|
partcov= gsl_m - (a*a.transpose)
|
80
81
|
|
81
82
|
d=klass_m.diagonal(*(partcov.diagonal.collect {|v| Math::sqrt(1/v)}))
|
@@ -124,7 +124,7 @@ module Statsample
|
|
124
124
|
|
125
125
|
@original=Statsample::Bivariate.send(matrix_method, @ds).eigenvalues unless no_data
|
126
126
|
@ds_eigenvalues=Statsample::Dataset.new((1..@n_variables).map{|v| "ev_%05d" % v})
|
127
|
-
@ds_eigenvalues.fields.each {|f| @ds_eigenvalues[f].type=:
|
127
|
+
@ds_eigenvalues.fields.each {|f| @ds_eigenvalues[f].type=:numeric}
|
128
128
|
if bootstrap_method==:parameter or bootstrap_method==:random
|
129
129
|
rng = Distribution::Normal.rng
|
130
130
|
end
|
@@ -137,7 +137,7 @@ module Statsample
|
|
137
137
|
|
138
138
|
@fields.each do |f|
|
139
139
|
if bootstrap_method==:random
|
140
|
-
ds_bootstrap[f]=@n_cases.times.map {|c| rng.call}.
|
140
|
+
ds_bootstrap[f]=@n_cases.times.map {|c| rng.call}.to_numeric
|
141
141
|
elsif bootstrap_method==:data
|
142
142
|
ds_bootstrap[f]=ds[f].sample_with_replacement(@n_cases)
|
143
143
|
else
|
@@ -13,8 +13,8 @@ module Factor
|
|
13
13
|
#
|
14
14
|
# == Usage:
|
15
15
|
# require 'statsample'
|
16
|
-
# a=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1].
|
17
|
-
# b=[2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9].
|
16
|
+
# a=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1].to_numeric
|
17
|
+
# b=[2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9].to_numeric
|
18
18
|
# ds={'a'=>a,'b'=>b}.to_dataset
|
19
19
|
# cor_matrix=Statsample::Bivariate.correlation_matrix(ds)
|
20
20
|
# pca=Statsample::Factor::PCA.new(cor_matrix)
|
@@ -6,8 +6,8 @@ module Factor
|
|
6
6
|
#
|
7
7
|
# == Usage:
|
8
8
|
# require 'statsample'
|
9
|
-
# a=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1].
|
10
|
-
# b=[2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9].
|
9
|
+
# a=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1].to_numeric
|
10
|
+
# b=[2.4,0.7,2.9,2.2,3.0,2.7,1.6,1.1,1.6,0.9].to_numeric
|
11
11
|
# ds={'a'=>a,'b'=>b}.to_dataset
|
12
12
|
# cor_matrix=Statsample::Bivariate.correlation_matrix(ds)
|
13
13
|
# pa=Statsample::Factor::PrincipalAxis.new(cor_matrix)
|
@@ -8,12 +8,12 @@ module Statsample
|
|
8
8
|
#
|
9
9
|
# == Usage
|
10
10
|
# === Svg output
|
11
|
-
# a=[1,2,3,4].
|
12
|
-
# b=[3,4,5,6].
|
11
|
+
# a=[1,2,3,4].to_numeric
|
12
|
+
# b=[3,4,5,6].to_numeric
|
13
13
|
# puts Statsample::Graph::Boxplot.new(:vectors=>[a,b]).to_svg
|
14
14
|
# === Using ReportBuilder
|
15
|
-
# a=[1,2,3,4].
|
16
|
-
# b=[3,4,5,6].
|
15
|
+
# a=[1,2,3,4].to_numeric
|
16
|
+
# b=[3,4,5,6].to_numeric
|
17
17
|
# rb=ReportBuilder.new
|
18
18
|
# rb.add(Statsample::Graph::Boxplot.new(:vectors=>[a,b]))
|
19
19
|
# rb.save_html('boxplot.html')
|
@@ -6,10 +6,10 @@ module Statsample
|
|
6
6
|
#
|
7
7
|
# == Usage
|
8
8
|
# === Svg output
|
9
|
-
# a=[1,2,3,4].
|
9
|
+
# a=[1,2,3,4].to_numeric
|
10
10
|
# puts Statsample::Graph::Histogram.new(a).to_svg
|
11
11
|
# === Using ReportBuilder
|
12
|
-
# a=[1,2,3,4].
|
12
|
+
# a=[1,2,3,4].to_numeric
|
13
13
|
# rb=ReportBuilder.new
|
14
14
|
# rb.add(Statsample::Graph::Histogram.new(a))
|
15
15
|
# rb.save_html('histogram.html')
|
@@ -10,12 +10,12 @@ module Statsample
|
|
10
10
|
# The data is displayed as a collection of points, each having the value of one variable determining the position on the horizontal axis and the value of the other variable determining the position on the vertical axis.[2] This kind of plot is also called a scatter chart, scatter diagram and scatter graph.
|
11
11
|
# == Usage
|
12
12
|
# === Svg output
|
13
|
-
# a=[1,2,3,4].
|
14
|
-
# b=[3,4,5,6].
|
13
|
+
# a=[1,2,3,4].to_numeric
|
14
|
+
# b=[3,4,5,6].to_numeric
|
15
15
|
# puts Statsample::Graph::Scatterplot.new(a,b).to_svg
|
16
16
|
# === Using ReportBuilder
|
17
|
-
# a=[1,2,3,4].
|
18
|
-
# b=[3,4,5,6].
|
17
|
+
# a=[1,2,3,4].to_numeric
|
18
|
+
# b=[3,4,5,6].to_numeric
|
19
19
|
# rb=ReportBuilder.new
|
20
20
|
# rb.add(Statsample::Graph::Scatterplot.new(a,b))
|
21
21
|
# rb.save_html('scatter.html')
|
data/lib/statsample/matrix.rb
CHANGED
@@ -10,11 +10,12 @@ class ::Matrix
|
|
10
10
|
def to_matrix
|
11
11
|
self
|
12
12
|
end
|
13
|
+
|
13
14
|
def to_dataset
|
14
15
|
f = (self.respond_to? :fields_y) ? fields_y : column_size.times.map {|i| _("VAR_%d") % (i+1) }
|
15
16
|
ds=Statsample::Dataset.new(f)
|
16
17
|
f.each do |ff|
|
17
|
-
ds[ff].type=:
|
18
|
+
ds[ff].type=:numeric
|
18
19
|
ds[ff].name=ff
|
19
20
|
end
|
20
21
|
row_size.times {|i|
|
@@ -24,6 +25,7 @@ class ::Matrix
|
|
24
25
|
ds.name=self.name if self.respond_to? :name
|
25
26
|
ds
|
26
27
|
end
|
28
|
+
|
27
29
|
if defined? :eigenpairs
|
28
30
|
alias_method :eigenpairs_ruby, :eigenpairs
|
29
31
|
end
|
@@ -38,17 +40,15 @@ class ::Matrix
|
|
38
40
|
def eigenvalues
|
39
41
|
eigenpairs.collect {|v| v[0]}
|
40
42
|
end
|
43
|
+
|
41
44
|
def eigenvectors
|
42
45
|
eigenpairs.collect {|v| v[1]}
|
43
46
|
end
|
47
|
+
|
44
48
|
def eigenvectors_matrix
|
45
49
|
Matrix.columns(eigenvectors)
|
46
50
|
end
|
47
51
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
52
|
def to_gsl
|
53
53
|
out=[]
|
54
54
|
self.row_size.times{|i|
|
@@ -56,6 +56,10 @@ class ::Matrix
|
|
56
56
|
}
|
57
57
|
GSL::Matrix[*out]
|
58
58
|
end
|
59
|
+
|
60
|
+
def []=(i, j, x)
|
61
|
+
@rows[i][j] = x
|
62
|
+
end
|
59
63
|
end
|
60
64
|
|
61
65
|
module GSL
|
@@ -64,9 +68,11 @@ module GSL
|
|
64
68
|
def to_matrix
|
65
69
|
::Matrix.columns([self.size.times.map {|i| self[i]}])
|
66
70
|
end
|
71
|
+
|
67
72
|
def to_ary
|
68
73
|
to_a
|
69
74
|
end
|
75
|
+
|
70
76
|
def to_gsl
|
71
77
|
self
|
72
78
|
end
|
@@ -81,7 +87,7 @@ module GSL
|
|
81
87
|
f = (self.respond_to? :fields_y) ? fields_y : column_size.times.map {|i| _("VAR_%d") % (i+1) }
|
82
88
|
ds=Statsample::Dataset.new(f)
|
83
89
|
f.each do |ff|
|
84
|
-
ds[ff].type=:
|
90
|
+
ds[ff].type=:numeric
|
85
91
|
ds[ff].name=ff
|
86
92
|
end
|
87
93
|
row_size.times {|i|
|
@@ -95,18 +101,23 @@ module GSL
|
|
95
101
|
def row_size
|
96
102
|
size1
|
97
103
|
end
|
104
|
+
|
98
105
|
def column_size
|
99
106
|
size2
|
100
107
|
end
|
108
|
+
|
101
109
|
def determinant
|
102
110
|
det
|
103
111
|
end
|
112
|
+
|
104
113
|
def inverse
|
105
114
|
GSL::Linalg::LU.invert(self)
|
106
115
|
end
|
116
|
+
|
107
117
|
def eigenvalues
|
108
118
|
eigenpairs.collect {|v| v[0]}
|
109
119
|
end
|
120
|
+
|
110
121
|
def eigenvectors
|
111
122
|
eigenpairs.collect {|v| v[1]}
|
112
123
|
end
|
@@ -123,6 +134,7 @@ module GSL
|
|
123
134
|
GSL::Eigen::symmv_sort(eigval, eigvec, GSL::Eigen::SORT_VAL_DESC)
|
124
135
|
eigvec
|
125
136
|
end
|
137
|
+
|
126
138
|
def eigenpairs
|
127
139
|
eigval, eigvec= GSL::Eigen.symmv(self)
|
128
140
|
GSL::Eigen::symmv_sort(eigval, eigvec, GSL::Eigen::SORT_VAL_DESC)
|
@@ -137,12 +149,14 @@ module GSL
|
|
137
149
|
def square?
|
138
150
|
size1==size2
|
139
151
|
end
|
152
|
+
|
140
153
|
def to_matrix
|
141
154
|
rows=self.size1
|
142
155
|
cols=self.size2
|
143
156
|
out=(0...rows).collect{|i| (0...cols).collect {|j| self[i,j]} }
|
144
157
|
::Matrix.rows(out)
|
145
158
|
end
|
159
|
+
|
146
160
|
def total_sum
|
147
161
|
sum=0
|
148
162
|
size1.times {|i|
|
@@ -25,8 +25,8 @@ module Statsample
|
|
25
25
|
# * x: independent Vector
|
26
26
|
# * y: dependent Vector
|
27
27
|
# <b>Usage:</b>
|
28
|
-
# x=100.times.collect {|i| rand(100)}.
|
29
|
-
# y=100.times.collect {|i| 2+x[i]*2+rand()}.
|
28
|
+
# x=100.times.collect {|i| rand(100)}.to_numeric
|
29
|
+
# y=100.times.collect {|i| 2+x[i]*2+rand()}.to_numeric
|
30
30
|
# sr=Statsample::Regression.simple(x,y)
|
31
31
|
# sr.a
|
32
32
|
# => 2.51763295177808
|
@@ -6,9 +6,9 @@ module Statsample
|
|
6
6
|
# Use:.
|
7
7
|
#
|
8
8
|
# require 'statsample'
|
9
|
-
# a=1000.times.collect {rand}.
|
10
|
-
# b=1000.times.collect {rand}.
|
11
|
-
# c=1000.times.collect {rand}.
|
9
|
+
# a=1000.times.collect {rand}.to_numeric
|
10
|
+
# b=1000.times.collect {rand}.to_numeric
|
11
|
+
# c=1000.times.collect {rand}.to_numeric
|
12
12
|
# ds={'a'=>a,'b'=>b,'c'=>c}.to_dataset
|
13
13
|
# ds['y']=ds.collect{|row| row['a']*5+row['b']*3+row['c']*2+rand()}
|
14
14
|
# lr=Statsample::Regression.multiple(ds,'y')
|
@@ -9,10 +9,10 @@ module Multiple
|
|
9
9
|
# If you need pairwise, use RubyEngine
|
10
10
|
# Example:
|
11
11
|
#
|
12
|
-
# @a=[1,3,2,4,3,5,4,6,5,7].to_vector(:
|
13
|
-
# @b=[3,3,4,4,5,5,6,6,4,4].to_vector(:
|
14
|
-
# @c=[11,22,30,40,50,65,78,79,99,100].to_vector(:
|
15
|
-
# @y=[3,4,5,6,7,8,9,10,20,30].to_vector(:
|
12
|
+
# @a=[1,3,2,4,3,5,4,6,5,7].to_vector(:numeric)
|
13
|
+
# @b=[3,3,4,4,5,5,6,6,4,4].to_vector(:numeric)
|
14
|
+
# @c=[11,22,30,40,50,65,78,79,99,100].to_vector(:numeric)
|
15
|
+
# @y=[3,4,5,6,7,8,9,10,20,30].to_vector(:numeric)
|
16
16
|
# ds={'a'=>@a,'b'=>@b,'c'=>@c,'y'=>@y}.to_dataset
|
17
17
|
# lr=Statsample::Regression::Multiple::AlglibEngine.new(ds,'y')
|
18
18
|
#
|
@@ -109,7 +109,7 @@ class AlglibEngine < BaseEngine
|
|
109
109
|
red_sd=residuals.sds
|
110
110
|
res.collect {|v|
|
111
111
|
v.quo(red_sd)
|
112
|
-
}.to_vector(:
|
112
|
+
}.to_vector(:numeric)
|
113
113
|
end
|
114
114
|
end
|
115
115
|
end
|
@@ -53,7 +53,7 @@ module Statsample
|
|
53
53
|
else
|
54
54
|
process(vect)
|
55
55
|
end
|
56
|
-
}.to_vector(:
|
56
|
+
}.to_vector(:numeric)
|
57
57
|
end
|
58
58
|
# Retrieves a vector with standarized values for y
|
59
59
|
def standarized_predicted
|
@@ -69,7 +69,7 @@ module Statsample
|
|
69
69
|
else
|
70
70
|
@ds[@y_var][i] - process(vect)
|
71
71
|
end
|
72
|
-
}.to_vector(:
|
72
|
+
}.to_vector(:numeric)
|
73
73
|
end
|
74
74
|
# R Multiple
|
75
75
|
def r
|
@@ -133,7 +133,7 @@ module Statsample
|
|
133
133
|
def tolerance(var)
|
134
134
|
ds=assign_names(@dep_columns)
|
135
135
|
ds.each{|k,v|
|
136
|
-
ds[k]=v.to_vector(:
|
136
|
+
ds[k]=v.to_vector(:numeric)
|
137
137
|
}
|
138
138
|
lr=self.class.new(ds.to_dataset,var)
|
139
139
|
1-lr.r2
|
@@ -9,10 +9,10 @@ if Statsample.has_gsl?
|
|
9
9
|
# If you need pairwise, use RubyEngine
|
10
10
|
# Example:
|
11
11
|
#
|
12
|
-
# @a=[1,3,2,4,3,5,4,6,5,7].to_vector(:
|
13
|
-
# @b=[3,3,4,4,5,5,6,6,4,4].to_vector(:
|
14
|
-
# @c=[11,22,30,40,50,65,78,79,99,100].to_vector(:
|
15
|
-
# @y=[3,4,5,6,7,8,9,10,20,30].to_vector(:
|
12
|
+
# @a=[1,3,2,4,3,5,4,6,5,7].to_vector(:numeric)
|
13
|
+
# @b=[3,3,4,4,5,5,6,6,4,4].to_vector(:numeric)
|
14
|
+
# @c=[11,22,30,40,50,65,78,79,99,100].to_vector(:numeric)
|
15
|
+
# @y=[3,4,5,6,7,8,9,10,20,30].to_vector(:numeric)
|
16
16
|
# ds={'a'=>@a,'b'=>@b,'c'=>@c,'y'=>@y}.to_dataset
|
17
17
|
# lr=Statsample::Regression::Multiple::GslEngine.new(ds,'y')
|
18
18
|
#
|
@@ -109,7 +109,7 @@ if Statsample.has_gsl?
|
|
109
109
|
red_sd=residuals.sds
|
110
110
|
res.collect {|v|
|
111
111
|
v.quo(red_sd)
|
112
|
-
}.to_vector(:
|
112
|
+
}.to_vector(:numeric)
|
113
113
|
end
|
114
114
|
|
115
115
|
# Standard error for coeffs
|
@@ -8,10 +8,10 @@ module Multiple
|
|
8
8
|
#
|
9
9
|
# Example:
|
10
10
|
#
|
11
|
-
# @a=[1,3,2,4,3,5,4,6,5,7].to_vector(:
|
12
|
-
# @b=[3,3,4,4,5,5,6,6,4,4].to_vector(:
|
13
|
-
# @c=[11,22,30,40,50,65,78,79,99,100].to_vector(:
|
14
|
-
# @y=[3,4,5,6,7,8,9,10,20,30].to_vector(:
|
11
|
+
# @a=[1,3,2,4,3,5,4,6,5,7].to_vector(:numeric)
|
12
|
+
# @b=[3,3,4,4,5,5,6,6,4,4].to_vector(:numeric)
|
13
|
+
# @c=[11,22,30,40,50,65,78,79,99,100].to_vector(:numeric)
|
14
|
+
# @y=[3,4,5,6,7,8,9,10,20,30].to_vector(:numeric)
|
15
15
|
# ds={'a'=>@a,'b'=>@b,'c'=>@c,'y'=>@y}.to_dataset
|
16
16
|
# lr=Statsample::Regression::Multiple::RubyEngine.new(ds,'y')
|
17
17
|
|
@@ -6,10 +6,10 @@ module Statsample
|
|
6
6
|
# PCA and Factor Analysis.
|
7
7
|
#
|
8
8
|
# == Usage
|
9
|
-
# @x1=[1,1,1,1,2,2,2,2,3,3,3,30].to_vector(:
|
10
|
-
# @x2=[1,1,1,2,2,3,3,3,3,4,4,50].to_vector(:
|
11
|
-
# @x3=[2,2,1,1,1,2,2,2,3,4,5,40].to_vector(:
|
12
|
-
# @x4=[1,2,3,4,4,4,4,3,4,4,5,30].to_vector(:
|
9
|
+
# @x1=[1,1,1,1,2,2,2,2,3,3,3,30].to_vector(:numeric)
|
10
|
+
# @x2=[1,1,1,2,2,3,3,3,3,4,4,50].to_vector(:numeric)
|
11
|
+
# @x3=[2,2,1,1,1,2,2,2,3,4,5,40].to_vector(:numeric)
|
12
|
+
# @x4=[1,2,3,4,4,4,4,3,4,4,5,30].to_vector(:numeric)
|
13
13
|
# ds={'x1'=>@x1,'x2'=>@x2,'x3'=>@x3,'x4'=>@x4}.to_dataset
|
14
14
|
# opts={:name=>"Scales", # Name of analysis
|
15
15
|
# :summary_correlation_matrix=>true, # Add correlation matrix
|
@@ -3,10 +3,10 @@ module Statsample
|
|
3
3
|
# Analysis of a Scale. Analoge of Scale Reliability analysis on SPSS.
|
4
4
|
# Returns several statistics for complete scale and each item
|
5
5
|
# == Usage
|
6
|
-
# @x1=[1,1,1,1,2,2,2,2,3,3,3,30].to_vector(:
|
7
|
-
# @x2=[1,1,1,2,2,3,3,3,3,4,4,50].to_vector(:
|
8
|
-
# @x3=[2,2,1,1,1,2,2,2,3,4,5,40].to_vector(:
|
9
|
-
# @x4=[1,2,3,4,4,4,4,3,4,4,5,30].to_vector(:
|
6
|
+
# @x1=[1,1,1,1,2,2,2,2,3,3,3,30].to_vector(:numeric)
|
7
|
+
# @x2=[1,1,1,2,2,3,3,3,3,4,4,50].to_vector(:numeric)
|
8
|
+
# @x3=[2,2,1,1,1,2,2,2,3,4,5,40].to_vector(:numeric)
|
9
|
+
# @x4=[1,2,3,4,4,4,4,3,4,4,5,30].to_vector(:numeric)
|
10
10
|
# ds={'x1'=>@x1,'x2'=>@x2,'x3'=>@x3,'x4'=>@x4}.to_dataset
|
11
11
|
# ia=Statsample::Reliability::ScaleAnalysis.new(ds)
|
12
12
|
# puts ia.summary
|
@@ -49,7 +49,7 @@ module Statsample
|
|
49
49
|
|
50
50
|
@cov_m=Statsample::Bivariate.covariance_matrix(@ds)
|
51
51
|
# Mean for covariances and variances
|
52
|
-
@variances=@k.times.map {|i| @cov_m[i,i]}.
|
52
|
+
@variances=@k.times.map {|i| @cov_m[i,i]}.to_numeric
|
53
53
|
@variances_mean=@variances.mean
|
54
54
|
@covariances_mean=(@variance-@variances.sum).quo(@k**2-@k)
|
55
55
|
#begin
|
@@ -97,7 +97,7 @@ module Statsample
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
def mean_rpb
|
100
|
-
item_total_correlation.values.
|
100
|
+
item_total_correlation.values.to_numeric.mean
|
101
101
|
end
|
102
102
|
def item_statistics
|
103
103
|
@is||=@ds.fields.inject({}) do |a,v|
|
@@ -54,7 +54,7 @@ module Statsample
|
|
54
54
|
def corrected_dataset
|
55
55
|
if @cds.nil?
|
56
56
|
@cds=@ds.dup_empty
|
57
|
-
@key.keys.each {|k| @cds[k].type=:
|
57
|
+
@key.keys.each {|k| @cds[k].type=:numeric; @cds[k].name=@ds[k].name}
|
58
58
|
@ds.each do |row|
|
59
59
|
out={}
|
60
60
|
row.each do |k,v|
|
data/lib/statsample/resample.rb
CHANGED
data/lib/statsample/shorthand.rb
CHANGED
@@ -52,7 +52,7 @@ module Statsample
|
|
52
52
|
# Random generation for the normal distribution
|
53
53
|
def rnorm(n,mean=0,sd=1)
|
54
54
|
rng=Distribution::Normal.rng(mean,sd)
|
55
|
-
Statsample::Vector.
|
55
|
+
Statsample::Vector.new_numeric(n) { rng.call}
|
56
56
|
end
|
57
57
|
# Creates a new Statsample::Dataset
|
58
58
|
# Each key is transformed into string
|