ExpectationMaximizationPCA

ExpectationMaximizationPCA.jl is a Julia rewrite of empca which provides Weighted Expectation Maximization PCA, an iterative method for solving PCA while properly weighting data.

https://github.com/christiangil/expectationmaximizationpca.jl

Science Score: 28.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.3%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

ExpectationMaximizationPCA.jl is a Julia rewrite of empca which provides Weighted Expectation Maximization PCA, an iterative method for solving PCA while properly weighting data.

Basic Info
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 5 years ago · Last pushed over 3 years ago
Metadata Files
Readme License Citation

README.md

ExpectationMaximizationPCA.jl

ExpectationMaximizationPCA.jl (EMPCA) is a Julia rewrite of empca which provides weighted Expectation Maximization PCA, an iterative method for solving PCA while properly weighting data.

Installation

The most current, tagged version of ExpectationMaximizationPCA.jl can be easily installed using Julia's Pkg

julia Pkg.add("ExpectationMaximizationPCA")

If you would like to contribute to the package, or just want to run the latest (untagged) version, you can use the following

julia Pkg.develop("ExpectationMaximizationPCA")

Example

```julia import ExpectationMaximizationPCA as EMPCA

making data

nx = 200 # dimensionality of observations nt = 50 # number of observations σ = ((((((1:nx) .- nx/2).^2) ./ (nx/2)^2) .+ 1)* ones(nt)') ./ 3 # noise, edges are twice as noisy as the center data = rand(nt)' .* sin.(((1:nx) ./ nx) * 2π) + (0.2 .* rand(nt)') .* cos.(((1:nx) ./ nx) * 2π) # a mixture of sin and cos signals data .+= σ .* randn(size(data)) # add Gaussian noise

performing EMPCA

nb = 2 # number of basis vectors μ = vec(mean(data; dims=2)) # mean observation weights = 1 ./ σ.^2 # use inverse variance as the weights

weights = ones(size(data)) # uniform weights replicates PCA

basis_vecs, scores = EMPCA.EMPCA(μ, nb, data, weights) # perform EMPCA on data .- μ with nb basis vectors using weights for weighting ```

Documentation

The documentation for this package is available here.

The original python version can be found here.

Citation

The paper S. Bailey 2012, PASP, 124, 1015 describes the underlying math and is available as a pre-print at: http://arxiv.org/abs/1208.4122

If you use this code in an academic paper, please include a citation as described in CITATION.txt, and optionally an acknowledgement such as:

This work uses the Weighted EMPCA code by Stephen Bailey, available at https://github.com/sbailey/empca/

Owner

  • Name: Christian Gilbertson
  • Login: christiangil
  • Kind: user

Citation (CITATION.txt)

If you use this code in an academic paper, please include a citation to
S. Bailey 2012, PASP, 124, 1015 and optionally an acknowledgement such as:

> This work uses the Weighted EMPCA code by Stephen Bailey,
> available at https://github.com/sbailey/empca/

BibTeX entry:

@ARTICLE{2012PASP..124.1015B,
   author = {{Bailey}, S.},
    title = "{Principal Component Analysis with Noisy and/or Missing Data}",
  journal = {\pasp},
archivePrefix = "arXiv",
   eprint = {1208.4122},
 primaryClass = "astro-ph.IM",
 keywords = {Data Analysis and Techniques},
     year = 2012,
    month = sep,
   volume = 124,
    pages = {1015-1023},
      doi = {10.1086/668105},
   adsurl = {http://adsabs.harvard.edu/abs/2012PASP..124.1015B},
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 12 months ago

All Time
  • Total issues: 1
  • Total pull requests: 1
  • Average time to close issues: less than a minute
  • Average time to close pull requests: 3 days
  • Total issue authors: 1
  • Total pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 1
  • Total dependent repositories: 0
  • Total versions: 1
juliahub.com: ExpectationMaximizationPCA

ExpectationMaximizationPCA.jl is a Julia rewrite of empca which provides Weighted Expectation Maximization PCA, an iterative method for solving PCA while properly weighting data.

  • Versions: 1
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Dependent repos count: 9.9%
Dependent packages count: 38.9%
Average: 41.6%
Forks count: 53.5%
Stargazers count: 64.2%
Last synced: 11 months ago