Claude Code Plugins

Community-maintained marketplace

Feedback

Statsmodels library for statistical modeling and econometrics. Use for time series decomposition, trend analysis, regression, and seasonal adjustment of economic data.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name statsmodels
description Statsmodels library for statistical modeling and econometrics. Use for time series decomposition, trend analysis, regression, and seasonal adjustment of economic data.

Statsmodels

Statsmodels provides statistical modeling tools for time series and econometric analysis.

Time Series Decomposition

from statsmodels.tsa.seasonal import seasonal_decompose
import pandas as pd

# Ensure datetime index with frequency
df.index = pd.to_datetime(df.index)
df = df.asfreq('QE')  # Quarterly end frequency

# Perform seasonal decomposition
result = seasonal_decompose(
    df['current_account'],
    model='additive',  # or 'multiplicative'
    period=4  # quarterly data has period of 4
)

# Access components
trend = result.trend
seasonal = result.seasonal
residual = result.resid

# Plot decomposition
result.plot()
plt.savefig('/app/output/decomposition.png')

Extracting Decomposition Results

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(df['current_account'], model='additive', period=4)

# Create DataFrame with components
decomposition_df = pd.DataFrame({
    'observed': result.observed,
    'trend': result.trend,
    'seasonal': result.seasonal,
    'residual': result.resid
})

# Identify peak seasonal quarter
seasonal_by_quarter = df.groupby(df.index.quarter)['seasonal'].mean()
peak_quarter = f"Q{seasonal_by_quarter.idxmax()}"

Trend Analysis

from statsmodels.tsa.filters.hp_filter import hpfilter

# Hodrick-Prescott filter for trend extraction
cycle, trend = hpfilter(df['current_account'], lamb=1600)

# Determine trend direction
trend_slope = (trend.iloc[-1] - trend.iloc[0]) / len(trend)
trend_direction = "improving" if trend_slope > 0 else "deteriorating"

OLS Regression

import statsmodels.api as sm

# Time trend regression
X = sm.add_constant(range(len(df)))
y = df['current_account']

model = sm.OLS(y, X)
results = model.fit()

print(results.summary())
print(f"R-squared: {results.rsquared:.4f}")
print(f"Trend coefficient: {results.params[1]:.4f}")

Autocorrelation Analysis

from statsmodels.graphics.tsaplots import plot_acf, plot_pacf

fig, axes = plt.subplots(1, 2, figsize=(12, 4))

plot_acf(df['current_account'].dropna(), ax=axes[0], lags=12)
plot_pacf(df['current_account'].dropna(), ax=axes[1], lags=12)

plt.tight_layout()
plt.savefig('/app/output/acf_pacf.png')

Stationarity Testing

from statsmodels.tsa.stattools import adfuller

result = adfuller(df['current_account'].dropna())
print(f'ADF Statistic: {result[0]:.4f}')
print(f'p-value: {result[1]:.4f}')
print(f'Critical Values: {result[4]}')