Sha256: 43371b615bd270f877d5230c8ffced89b88304a4183ee8ae88d7846ab65ad4d0

Contents?: true

Size: 1.1 KB

Versions: 6

Compression:

Stored size: 1.1 KB

Contents

#!/usr/bin/ruby
$:.unshift(File.dirname(__FILE__)+'/../lib/')

# == Description
#
# This example will explain how a parallel analysis can be performed on a PCA.
# Parallel Analysis helps in determining how many components are to be retained
# from the PCA.
require 'statsample'
samples=150
variables=30
iterations=50
Statsample::Analysis.store(Statsample::Factor::ParallelAnalysis) do 
  
rng = Distribution::Normal.rng()
f1  = rnorm(samples)
f2  = rnorm(samples)
f3  = rnorm(samples)

vectors={}

variables.times do |i|
  vectors["v#{i}".to_sym] = Daru::Vector.new(samples.times.collect {|nv| f1[nv]*i+(f2[nv]*(15-i))+((f3[nv]*(30-i))*1.5)*rng.call})
  vectors["v#{i}".to_sym].rename "Vector #{i}"
end

  ds = Daru::DataFrame.new(vectors)

  pa=Statsample::Factor::ParallelAnalysis.new(ds, :iterations=>iterations, :debug=>true)
  pca=pca(cor(ds))
  echo "There are 3 real factors on data"
  summary pca
  echo "Traditional Kaiser criterion (k>1) returns #{pca.m} factors"
  summary pa
  echo "Parallel Analysis returns #{pa.number_of_factors} factors to preserve"
end

if __FILE__==$0
   Statsample::Analysis.run_batch
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
statsample-ekatena-2.0.2.1 examples/parallel_analysis.rb
statsample-ekatena-2.0.2 examples/parallel_analysis.rb
statsample-2.1.0 examples/parallel_analysis.rb
statsample-2.0.2 examples/parallel_analysis.rb
statsample-2.0.1 examples/parallel_analysis.rb
statsample-2.0.0 examples/parallel_analysis.rb