A social-science-friendly toolkit for OLS regression and SPSS-like ANOVA
Project description
sunlm
sunlm is a lightweight, social-science–friendly Python package for SPSS-like OLS regression and ANOVA / ANCOVA.
It is designed for researchers in communication, psychology, marketing, and related social sciences who want clear, interpretable statistical output without complex statistical coding.
sunlm emphasizes:
- R-style formula syntax
- SPSS-equivalent ANOVA (Type III SS, sum coding)
- Standardized coefficients and semi-partial R²
- Clean, APA-style tables
- Simple, top-level API (
sunlm.reg,sunlm.aov)
Installation
pip install sunlm
Quick Start: Load Example Data
sunlm includes a built-in example dataset for immediate practice.
import sunlm
df = sunlm.data()
df.head()
personalization involvement price_sensitivity brand_trust age purchase_intention
0 1 1 -0.740814 1.408369 51.311519 7.000000
1 0 1 0.072907 -0.608711 41.350777 5.122004
2 0 0 0.403086 -1.320603 27.877310 2.840572
3 1 0 1.471929 -0.669619 46.907773 3.497987
4 1 0 0.307384 1.264625 35.208771 4.472068
Tutorial 1️⃣ OLS Regression
import sunlm
model = sunlm.reg(
"purchase_intention ~ personalization * involvement + age",
data=df
)
model.summary()
## 📊 OLS Regression Summary
Unstd. B Std. Err. (unstd) t-value Std. β Semi-partial R² p-value
Intercept 2.284 0.473 4.829 0.000 (< .001)
personalization 0.814 0.319 2.553 0.305 0.035 0.012 (< .05)
involvement 0.609 0.177 3.443 0.363 0.064 0.001 (< .001)
personalization:involvement 0.374 0.248 1.510 0.204 0.012 0.134 (n.s.)
age 0.039 0.010 3.713 0.273 0.074 0.000 (< .001)
## 📈 Model Fit Statistics
N 100
R² 0.490
Adj. R² 0.469
Tutorial 2️⃣ ANOVA / ANCOVA (SPSS-like)
import sunlm
model = sunlm.aov(
"purchase_intention ~ C(personalization) * C(involvement) + age",
data=df
)
model.summary()
## Tests of Between-Subjects Effects
Dependent Variable: purchase_intention
Source sum_sq df mean_sq F p-value Partial Eta Squared
Corrected Model 91.322 6 15.220 16.409 0.000 (< .001) 0.514
Intercept 64.597 1 64.597 69.640 0.000 (< .001) 0.428
personalization (factor) 33.449 1 33.449 36.060 0.000 (< .001) 0.279
involvement (factor) 40.764 2 20.382 21.973 0.000 (< .001) 0.321
personalization × involvement 2.883 2 1.441 1.554 0.217 (n.s.) 0.032
age 11.819 1 11.819 12.742 0.001 (< .001) 0.120
Error 86.266 93 0.928
Total 2719.617 100
Corrected Total 177.588 99
R Squared = 0.514 (Adjusted R Squared = 0.483)
Tutorial 3️⃣ Post Hoc Tests
Tukey HSD
model.TukeyHSD("involvement")
## Tukey HSD for involvement (alpha=0.05)
group1 group2 meandiff Std. Error p-value lower upper
0 1 1.186 0.235 0.000 (< .001) 0.494 1.877
0 2 1.494 0.243 0.000 (< .001) 0.779 2.210
1 2 0.309 0.233 0.534 (n.s.) -0.377 0.995
Bonferroni
model.Bonferroni("involvement")
## Bonferroni Pairwise Comparisons for involvement (alpha=0.05)
group1 group2 meandiff Std. Error t p-value lower upper
0 1 1.149 0.237 4.846 0.000 (< .001) 0.571 1.727
0 2 1.576 0.246 6.410 0.000 (< .001) 0.976 2.175
1 2 0.427 0.234 1.828 0.212 (n.s.) -0.142 0.996
Top-level API Summary
sunlm.reg(formula, data) # OLS regression
sunlm.aov(formula, data) # ANOVA / ANCOVA
sunlm.data() # Load example dataset
Citation
If you use sunlm in academic research, please cite it as:
Kim, S.-W. (2025). sunlm (Version 0.1.3.post1) [Software]. https://pypi.org/project/sunlm/
License
MIT License
Author
Seonwoo Kim
Northern Arizona University
Designed for researchers who want SPSS-equivalent statistics with Python clarity.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sunlm-0.1.3.post9.tar.gz.
File metadata
- Download URL: sunlm-0.1.3.post9.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67026cfe92191aee0426f8bbffbce3d3abe3cdb114062ca2ebe02e9d31da3c53
|
|
| MD5 |
3a8230ceb0b4dd3baf926db0bee19638
|
|
| BLAKE2b-256 |
46c3925eaa4e4dc422a035222e59acdf1fe653d67c72e5b3f46baabf6a4ea78e
|
File details
Details for the file sunlm-0.1.3.post9-py3-none-any.whl.
File metadata
- Download URL: sunlm-0.1.3.post9-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1abdeaa86867865b6a7fc03196b3153425c62af652987a1d39e3255c9beafec
|
|
| MD5 |
8a08821b4916be6254e338341bfe42e2
|
|
| BLAKE2b-256 |
2e82cdaaea1f3efd5ce5dbe1209fcdac313dfb7ffbcad90002c5328bef75fa13
|