Introduction
GAUSS 25 will transform your workflow with intuitive tools for data exploration, advanced diagnostics, and seamless model comparison.
Comprehensive Panel Data Tools

Struggling to make sense of panel data? GAUSS 25 transforms the way you load, analyze, and explore your data, giving you the intuitive tools you need.
Explore Panel Data Characteristics
- Explore overall, within-group, and between group summary statistics with pdSummary.
// Import data
pd_cty = loadd("pd_county.gdat");
/*
** Create panel data summary report.
** pdSummary will automatically detect
** group variable and time variable
*/
call pdSummary(pd_cty);
====================================================================================== Group ID: county Balanced: Yes Valid cases: 28 Missings: 0 N. Groups: 4 T. Average: 7.000 ====================================================================================== Variable Measure Mean Std. Dev. Minimum Maximum -------------------------------------------------------------------------------------- emp Overall 30.201 25.514 2.936 73.689 Between . 28.888 4.367 71.362 Within . 1.376 26.728 32.528 wage Overall 17.313 4.273 12.302 28.908 Between . 4.394 13.576 23.630 Within . 1.802 14.377 22.591 ======================================================================================
- See panel data time distributions with pdSize and pdTimeSpans.
// Print report on size and range
// of each individual in the panel.
call pdSize(pd_cty);
============================================================ Group ID: county Balanced: Yes Valid cases: 28 Missings: 0 N. Groups: 4 T. Average: 7.000 ============================================================ county T[i] Start Date End Date ------------------------------------------------------------ Cook 7 1977-01-01 1983-01-01 Harris 7 1977-01-01 1983-01-01 Los Angeles 7 1977-01-01 1983-01-01 Maricopa 7 1977-01-01 1983-01-01 ============================================================
Prepare Panel Data for Modeling
- Automated and intelligent detection of group and time variables for seamless workflows.
- Sort panel data instantly with detected group and time variables using pdSort.
- New pdLag and pdDiff for calculating panel data lags and differences.
// Compute second lag of each
// individual in the panel
pd_cty_l = pdLag(pd_cty, 2);
// Print the first 10 observations
print pd_cty_l[1:10,.];
county year emp wage Los Angeles 1977-01-01 . . Los Angeles 1978-01-01 . . Los Angeles 1979-01-01 5.0409999 13.151600 Los Angeles 1980-01-01 5.5999999 12.301800 Los Angeles 1981-01-01 5.0149999 12.839500 Los Angeles 1982-01-01 4.7150002 13.803900 Los Angeles 1983-01-01 4.0929999 14.289700 Cook 1977-01-01 . . Cook 1978-01-01 . . Cook 1979-01-01 71.319000 14.790900
- Check for balance and consecutiveness with pdAllBalanced and pdAllConsecutive.
Ready to get started using GAUSS 25? Contact us for a GAUSS 25 demo!
New Hypothesis Testing
The new waldTest procedure provides a powerful and intuitive tool for testing linear hypotheses after estimation.
- Perform post-estimation hypothesis testing after OLS, GLM, GMM, and Quantile Regression.
- Specify hypotheses effortlessly using variable names.
- Comprehensive support for linear combination of variables in hypotheses.
// Run ols model
struct olsmtout cen_ols;
cen_ols = olsmt("census3.dta", "brate ~ medage + medage*medage + region");
// Test the hypothesis that the coefficients on
// the Ncentral region and South region are equal
{ wald_stat, p_value } = waldTest(cen_ols, "region: NCentral - region: South");
====================================== Wald test of null joint hypothesis: region: NCentral - region: South = 0 ------------------------------------- F( 1, 44 ): 5.0642 Prob > F : 0.0295 =====================================
Check for the equivalency of slopes across quantiles after Quantile Regression with the new qfitSlopeTest.
// Set up tau for regression
tau = 0.35|0.55|0.85;
// Call quantileFit
struct qfitOut qOut;
qOut = quantileFit("regsmpl.dta", "ln_wage ~ age + age:age + tenure", tau);
// Test for joint equivalency of all slopes
// across all quantiles
qfitSlopeTest(qOut);
=================================== Joint Test of Equality in Slopes : tau in { 0.35 , 0.55 , 0.85 } Model: ln_wage ~ age + age_age + tenure ----------------------------------- F( 9, 28097 ): 138.2428 Prob > F : 0.0000 ===================================
Enhanced Result Printouts
GAUSS 25 now offers expanded model diagnostics and consistent printouts across all estimation procedures.
//Get file name with full path
file = getGAUSShome("examples/clotting_time.dat");
//Perform estimation and print report
call glm(file, "lot1 ~ ln(plasma)", "gamma");
Generalized Linear Model =================================================================== Valid cases: 9 Dependent variable: lot1 Degrees of freedom: 7 Distribution gamma Deviance: 0.0167 Link function: inverse Pearson Chi-square: 0.0171 AIC: 37.990 Log likelihood: -16 BIC: 38.582 Dispersion: 0 Iterations: 38 Number of vars: 2 =================================================================== Standard Prob Variable Estimate Error t-value >|t| ------------------------------------------------------------------- CONSTANT -0.016554 0.00092754 -17.848 4.279e-07 ln(plasma) 0.015343 0.00041496 36.975 2.7511e-09 ===================================================================
These enhancements make it easier than ever to compare models, explore results, and gain deeper insights with confidence.
Improved Performance and Speed-ups
- Expanded two-way tabulation using tabulate to find row or column percentages.
- The gmmFitIV function now uses metadata from dataframes to identify and report variable names and supports the "by" keyword.
- Optional specification of sorted data provides speed improvements when using counts.
- The plotFreq procedure now supports the "by" keyword for counting frequencies across groups.
// Load dataset
tips2 = loadd("tips2.csv");
// Create a frequency plot of visits per day
// for each category of smoker (Yes, or No).
plotFreq(tips2, "day + by(smoker)");

- saved now automatically detects and saves categorical and string variables using their labels for Excel files.
Conclusion
For a complete list of all GAUSS 25 offers please see the complete changelog.