Skip to content

Commit 7dde8bd

Browse files
committed
TST: Fix use of fixture
Do not call fixture directly to avoid future pytest issues Start removing use of .values and use asarray instead
1 parent bfa0676 commit 7dde8bd

File tree

14 files changed

+49
-44
lines changed

14 files changed

+49
-44
lines changed

linearmodels/asset_pricing/model.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -708,8 +708,8 @@ def fit(self, center=True, use_cue=False, steps=2, disp=10, max_iter=1000,
708708
# 1. Starting Values - use 2 pass
709709
mod = LinearFactorModel(self.portfolios, self.factors, risk_free=self._risk_free)
710710
res = mod.fit()
711-
betas = res.betas.values.ravel()
712-
lam = res.risk_premia.values
711+
betas = np.asarray(res.betas).ravel()
712+
lam = np.asarray(res.risk_premia)
713713
mu = self.factors.ndarray.mean(0)
714714
sv = np.r_[betas, lam, mu][:, None]
715715
g = self._moments(sv, excess_returns)

linearmodels/asset_pricing/results.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ def summary(self):
8989
table.extend_right(SimpleTable(vals, stubs=stubs))
9090
smry.tables.append(table)
9191

92-
rp = self.risk_premia.values[:, None]
93-
se = self.risk_premia_se.values[:, None]
94-
tstats = (self.risk_premia / self.risk_premia_se).values
92+
rp = np.asarray(self.risk_premia)[:, None]
93+
se = np.asarray(self.risk_premia_se)[:, None]
94+
tstats = np.asarray(self.risk_premia / self.risk_premia_se)
9595
pvalues = 2 - 2 * stats.norm.cdf(np.abs(tstats))
9696
ci = rp + se * stats.norm.ppf([[0.025, 0.975]])
9797
param_data = np.c_[rp,
@@ -160,8 +160,8 @@ def full_summary(self):
160160
first = True
161161
for row in params.index:
162162
smry.tables.append(SimpleTable(['']))
163-
smry.tables.append(self._single_table(params.loc[row].values[:, None],
164-
se.loc[row].values[:, None],
163+
smry.tables.append(self._single_table(np.asarray(params.loc[row])[:, None],
164+
np.asarray(se.loc[row])[:, None],
165165
row, param_names, first))
166166
first = False
167167

linearmodels/iv/data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def __init__(self, x, var_name='x', nobs=None, convert_dummies=True, drop_first=
101101
x = expand_categoricals(x, drop_first)
102102

103103
self._pandas = x
104-
self._ndarray = self._pandas.values
104+
self._ndarray = np.asarray(self._pandas)
105105
if all_numeric or convert_dummies:
106106
self._ndarray = self._ndarray.astype(np.float64)
107107
self._labels = {i: list(label) for i, label in zip(range(x.ndim), x.axes)}

linearmodels/iv/model.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ def predict(self, params, *, exog=None, endog=None, data=None, eval_env=4):
278278
exog = parser.exog
279279
endog = parser.endog
280280
exog_endog = concat([exog, endog], 1)
281-
x = exog_endog.values
281+
x = asarray(exog_endog)
282282
params = atleast_2d(asarray(params))
283283
if params.shape[0] == 1:
284284
params = params.T
@@ -500,7 +500,7 @@ def _post_estimation(self, params, cov_estimator, cov_type):
500500
index = self._index
501501
eps = self.resids(params)
502502
y = self.dependent.pandas
503-
fitted = DataFrame(y.values - eps, y.index, ['fitted_values'])
503+
fitted = DataFrame(asarray(y) - eps, y.index, ['fitted_values'])
504504
weps = self.wresids(params)
505505
cov = cov_estimator.cov
506506
debiased = cov_estimator.debiased
@@ -824,7 +824,7 @@ def fit(self, *, iter_limit=2, tol=1e-4, initial_weight=None,
824824
wmat = inv(wz.T @ wz / nobs) if initial_weight is None else initial_weight
825825
sv = IV2SLS(self.dependent, self.exog, self.endog, self.instruments,
826826
weights=self.weights)
827-
_params = params = sv.fit().params.values[:, None]
827+
_params = params = asarray(sv.fit().params)[:, None]
828828
# _params = params = self.estimate_parameters(wx, wy, wz, wmat)
829829

830830
iters, norm = 1, 10 * tol + 1
@@ -1117,7 +1117,7 @@ def fit(self, *, starting=None, display=False, cov_type='robust', opt_options=No
11171117
res = IVGMM(self.dependent, exog, endog, instr,
11181118
weights=self.weights, weight_type=self._weight_type,
11191119
**self._weight_config).fit()
1120-
starting = res.params.values
1120+
starting = asarray(res.params)
11211121
else:
11221122
starting = asarray(starting)
11231123
if len(starting) != self.exog.shape[1] + self.endog.shape[1]:

linearmodels/panel/data.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def __init__(self, df):
3939
self._frame = new_df
4040
i, j, k = len(self._items), len(self._major_axis), len(self.minor_axis)
4141
self._shape = (i, j, k)
42-
self._values = np.swapaxes(np.reshape(new_df.values.copy().T, (i, k, j)), 1, 2)
42+
self._values = np.swapaxes(np.reshape(np.asarray(new_df).copy().T, (i, k, j)), 1, 2)
4343

4444
@classmethod
4545
def from_array(cls, values, items, major_axis, minor_axis):
@@ -239,7 +239,7 @@ def dataframe(self):
239239
@property
240240
def values2d(self):
241241
"""NumPy ndarray view of dataframe"""
242-
return self._frame.values
242+
return np.asarray(self._frame)
243243

244244
@property
245245
def values3d(self):
@@ -402,7 +402,7 @@ def weighted_group_mean(df, weights, root_w, level):
402402
else:
403403
denom = weights.groupby(level=level).transform('sum')
404404
weight_sum[level] = denom
405-
return num.values / denom.values
405+
return np.asarray(num) / np.asarray(denom)
406406

407407
def demean_pass(frame, weights, root_w):
408408
levels = groups.shape[1]
@@ -430,15 +430,15 @@ def demean_pass(frame, weights, root_w):
430430
current.index = self._frame.index
431431
return PanelData(current)
432432

433-
exclude = np.ptp(self._frame.values, 0) == 0
434-
max_rmse = np.sqrt(self._frame.values.var(0).max())
435-
scale = self._frame.std().values
433+
exclude = np.ptp(np.asarray(self._frame), 0) == 0
434+
max_rmse = np.sqrt(np.asarray(self._frame).var(0).max())
435+
scale = np.asarray(self._frame.std())
436436
exclude = exclude | (scale < 1e-14 * max_rmse)
437437
replacement = np.maximum(scale, 1)
438438
scale[exclude] = replacement[exclude]
439439
scale = scale[None, :]
440440

441-
while np.max(np.abs(current.values - previous.values) / scale) > 1e-8:
441+
while np.max(np.abs(np.asarray(current) - np.asarray(previous)) / scale) > 1e-8:
442442
previous = current
443443
current = demean_pass(previous, weights, root_w)
444444
current.index = self._frame.index
@@ -480,7 +480,7 @@ def demean(self, group='entity', weights=None, return_panel=True):
480480
group_mu = self._frame.groupby(level=level).transform('mean')
481481
out = self._frame - group_mu
482482
if not return_panel:
483-
return out.values
483+
return np.asarray(out)
484484
return PanelData(out)
485485
else:
486486
w = weights.values2d
@@ -492,7 +492,7 @@ def demean(self, group='entity', weights=None, return_panel=True):
492492
group_mu = weighted_sum / sum_weights
493493
out = np.sqrt(w) * (self._frame - group_mu)
494494
if not return_panel:
495-
return out.values
495+
return np.asarray(out)
496496
return PanelData(out)
497497

498498
def __str__(self):

linearmodels/panel/model.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ def _validate_data(self):
293293
self._not_null = ~missing
294294

295295
w = self.weights.dataframe
296-
if np.any(w.values <= 0):
296+
if np.any(np.asarray(w) <= 0):
297297
raise ValueError('weights must be strictly positive.')
298298
w = w / w.mean()
299299
self.weights = PanelData(w)
@@ -547,7 +547,7 @@ def _choose_cov(self, cov_type, **cov_config):
547547
else:
548548
clusters = pd.DataFrame(group_ids)
549549

550-
cov_config_upd['clusters'] = clusters.values if clusters is not None else clusters
550+
cov_config_upd['clusters'] = np.asarray(clusters) if clusters is not None else clusters
551551

552552
return cov_est, cov_config_upd
553553

@@ -1379,7 +1379,7 @@ def fit(self, *, reweight=False, cov_type='unadjusted', debiased=True, **cov_con
13791379
dep = self.dependent.dataframe
13801380
fitted = fitted.reindex(dep.index)
13811381
effects = effects.reindex(dep.index)
1382-
idiosyncratic = pd.DataFrame(dep.values - fitted.values - effects.values,
1382+
idiosyncratic = pd.DataFrame(np.asarray(dep) - np.asarray(fitted) - np.asarray(effects),
13831383
dep.index, ['idiosyncratic'])
13841384

13851385
residual_ss = float(weps.T @ weps)
@@ -1738,7 +1738,7 @@ def fit(self, *, small_sample=False, cov_type='unadjusted', debiased=True, **cov
17381738
wybar = self.dependent.mean('entity', weights=self.weights)
17391739
wxbar = self.exog.mean('entity', weights=self.weights)
17401740
params = lstsq(wxbar, wybar)[0]
1741-
wu = wybar.values - wxbar.values @ params
1741+
wu = np.asarray(wybar) - np.asarray(wxbar) @ params
17421742

17431743
nobs = weps.shape[0]
17441744
neffects = wu.shape[0]
@@ -1782,7 +1782,7 @@ def fit(self, *, small_sample=False, cov_type='unadjusted', debiased=True, **cov
17821782
eps = weps / root_w
17831783
index = self.dependent.index
17841784
fitted = pd.DataFrame(self.exog.values2d @ params, index, ['fitted_values'])
1785-
effects = pd.DataFrame(self.dependent.values2d - fitted.values - eps, index,
1785+
effects = pd.DataFrame(self.dependent.values2d - np.asarray(fitted) - eps, index,
17861786
['estimated_effects'])
17871787
idiosyncratic = pd.DataFrame(eps, index, ['idiosyncratic'])
17881788
residual_ss = float(weps.T @ weps)

linearmodels/system/model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ def predict(self, params, *, equations=None, data=None, eval_env=8):
616616
else:
617617
exog_endog = IVData(endog).pandas
618618

619-
fitted = exog_endog.values @ b
619+
fitted = np.asarray(exog_endog) @ b
620620
fitted = DataFrame(fitted, index=exog_endog.index, columns=[label])
621621
out[label] = fitted
622622
loc += kx

linearmodels/tests/asset_pricing/test_covariance.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111

1212
@pytest.fixture
13-
def data(request):
13+
def data():
1414
moments = np.random.randn(500, 10)
1515
jacobian = np.random.rand(10, 8)
1616
jacobian_inv = np.eye(10)

linearmodels/tests/asset_pricing/test_formulas.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def non_traded_model(request):
2626

2727

2828
@pytest.fixture(scope='module')
29-
def data(request):
29+
def data():
3030
premia = np.array([.1, .1, .1])
3131
out = generate_data(nportfolio=10, output='pandas', alpha=True, premia=premia)
3232
out['joined'] = concat([out.factors, out.portfolios], 1)

linearmodels/tests/iv/test_results.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import pytest
1+
from numpy import asarray
22
from numpy.testing import assert_allclose
33
from pandas import DataFrame
44
from pandas.testing import assert_series_equal
5+
import pytest
56

67
from linearmodels.iv.data import IVData
78
from linearmodels.iv.model import IV2SLS, IVGMM, IVGMMCUE, IVLIML
@@ -64,7 +65,7 @@ def test_fitted_predict(data, model):
6465
res = mod.fit()
6566
assert_series_equal(res.idiosyncratic, res.resids)
6667
y = mod.dependent.pandas
67-
expected = y.values - res.resids.values[:, None]
68+
expected = asarray(y) - asarray(res.resids)[:, None]
6869
expected = DataFrame(expected, y.index, ['fitted_values'])
6970
assert_frame_similar(expected, res.fitted_values)
7071
assert_allclose(expected, res.fitted_values)

0 commit comments

Comments
 (0)