Clarify or check Estimator input shapes
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Riproduci l'esempio e inizia da pymare/estimators/estimators.py, seguendo fit fino all'implementazione dell'estimatore e a weighted_least_squares in pymare/stats.py. Determina come devono essere gestiti y e v 1D rispetto a X, quindi assicurati che la validazione o la documentazione scelta renda espliciti questi requisiti ed eviti il confuso errore di einsum.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I was trying to run one of the Estimators using weighted_least_squares without initializing a Dataset and was getting confusing errors from numpy.einsum before I realized that inputs need to be 2D no matter what. We can coerce 1D inputs to 2D with a new Estimator._validate_inputs() method, or we can just update the docstrings to clarify requirements.
BTW, based on variable convention, I think it's reasonable to assume that X must be 2D, but it's not obvious that y, v, etc. should be 2D as well, and indeed, there's an obvious error about shape if X is 1D, but no shape check for y, v, etc.
To replicate:
y = np.random.random(10)
v = np.random.random(10) ** 2
X = np.random.random((10, 1))
est = pymare.estimators.DerSimonianLaird()
est.fit(y=y, v=v, X=X)
print(est.results.to_df())
Results in:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-41d64261b276> in <module>()
3 X = np.random.random((10, 1))
4 est = pymare.estimators.DerSimonianLaird()
----> 5 est.fit(y=y, v=v, X=X)
6 print(est.results.to_df())
~/Documents/tsalo/PyMARE/pymare/estimators/estimators.py in fit(self, dataset, **kwargs)
78 kwargs[name] = getattr(dataset, name)
79
---> 80 self.params_ = self._fit(**kwargs)
81 self.dataset_ = dataset
82
~/Documents/tsalo/PyMARE/pymare/estimators/estimators.py in _fit(self, y, v, X)
180
181 # Estimate initial betas with WLS, assuming tau^2=0
--> 182 beta_wls, inv_cov = weighted_least_squares(y, v, X, return_cov=True)
183
184 # Cochrane's Q
~/Documents/tsalo/PyMARE/pymare/stats.py in weighted_least_squares(y, v, X, tau2, return_cov)
24
25 # Einsum indices: k = studies, p = predictors, i = parallel iterates
---> 26 wX = np.einsum('kp,ki->ipk', X, w)
27 cov = wX.dot(X)
28
<__array_function__ internals> in einsum(*args, **kwargs)
~/anaconda/envs/python3/lib/python3.6/site-packages/numpy/core/einsumfunc.py in einsum(*operands, **kwargs)
1354 # If no optimization, run pure einsum
1355 if optimize_arg is False:
-> 1356 return c_einsum(*operands, **kwargs)
1357
1358 valid_einsum_kwargs = ['out', 'dtype', 'order', 'casting']
ValueError: einstein sum subscripts string contains too many subscripts for operand 1
- Lingua principale
- Python
- Stelle
- 58
- Fork
- 16
- Merge medio
- 17h 8m
- PR unite (30g)
- 3
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di neurostuff/PyMARE
-
enhancement: adding to condaAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
neurostuff/PyMARE#122 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 52/100
neurostuff/PyMARE#115 ·
-
breaking-change enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
neurostuff/PyMARE#103 · 1 commento ·
-
help wanted question
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
neurostuff/PyMARE#102 · 1 commento ·
-
breaking-change enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
neurostuff/PyMARE#101 ·
Tutte le issue di neurostuff/PyMARE
Issue simili
-
Claiming namespace `apoint`Apertanamespace operations
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
EclipseFdn/open-vsx.org#13573 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
collective/icalendar#1854 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rancher/rancher-ai-agent#412 ·
I maintainer di solito rispondono entro 6 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
TUDelftGeodesy/DePSI#134 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
HenriquesLab/rxiv-maker#335 ·