Forecasting NY State Tax Credits: R Shiny App for Businesses
Introduction
Background
Many New York State corporations find it worthwhile to investigate tax laws to determine possible credit eligibility under Article 9-A (Franchise Tax on Business Corporations) of the New York State Tax Law. As mandated by the Business Tax Reform and Rate Reduction Act of 1987 Section 109(a), all corporations (except LLCs, Subchapter S corporations, and sole proprietorships) are awarded tax credits that are provided to the owners of businesses conducting activities such as property investment, production of goods, or mortgage servicing.
Purpose
The purpose of this R Shiny application is to assist tax consultants with an insightful tool to advise these corporations, helping them make the most appropriate current and future business decisions when considering ways to offset their tax liabilities. The data used to drive this application came from an annual New York State corporation tax returns study, which only included businesses with a yearly tax liability timeframe between January 1st and December 31st.
Data
This tool analyzes two different datasets provided by the New York State Government: Corporate Tax Credits by Size of Entire Net Income (Income) and Corporate Tax Credits by Major Industry Group (Industry). Both datasets include a group specifying income ranges or industry names (Group), the type of credit awarded (Credit Name), the number of corporations awarded (Number of Taxpayers), the amount of credit awarded (Amount of Credit), and the tax liability year (Tax Year). Even though the tool utilizes both datasets, all the following tables and figures refer to Income with the assumption that Industry is processed in the same manner.
Data Exploration
If the user wants to explore the distribution of the data, the EDA tab displays the histograms of the Number of Taxpayers and Amount of Credit per taxpayer. As seen in Figure 1, the data is distributed by Group and income range. In this example, a large portion of the records exist in the lower income brackets (e.g., $1-$99,999). Note: a log function was used to display the mean amount due to its extreme skewness.
Feature Engineering
Transformation
The two main data issues that the app corrects for are the skewness of the credit amounts and the missing taxpayer information. The skewness of the data could be related to fewer businesses earning a higher tax credit than others (e.g., if an alcohol business produced a higher volume than other companies). The missing data, however, is due to Tax Law secrecy provisions, which prohibit the disclosure of data for instances for fewer than three taxpayers.
Performing a linear regression on this data required converting the skewed distribution to a normal one. As seen in Figure 2, since the target variable was skewed to the right, the following BoxCox transformation was used:
A normal quantile-quantile diagnostic plot (Q-Q plot) of the data is also shown before and after transformation. From Figure 3, we see that the Q-Q plot is more linear than that of Figure 2, meaning that the post-BoxCox transformation standardized residuals exhibit a more normal distribution than those of pre-BoxCox.
Imputation
Overcoming the next hurdle required filling in missing information from the Number of Taxpayers and Amount of Credit fields. For instance, in Table 1, three records are missing Number of Taxpayers information. However, the total number of taxpayers (Total Taxpayers) for the Alcoholic Beverage Production Credit is provided at the bottom. For imputation, the number of known taxpayers was subtracted from the Total Taxpayers. The remainder was then distributed equally across the missing records. For instance, Table 1 and 2 show the process when there are 25 Total Taxpayers with 22 known (25 – 22 = 3 missing): the undisclosed records were imputed by dividing the three missing taxpayers across all three records, each one receiving a single taxpayer. A similar process was performed on the Amount of Credit field for missing records.
Additional Cleaning
The dataset was further cleaned by dropping the Total Taxpayers record for each Credit Name and relabeling some of the fields: the tax year (Year), the credit name (Name), and the number of taxpayers (Num). To standardize the data, an engineered target field was also created by calculating the Amount of Credit per taxpayer (Avg) for each record.
Modeling
Feature Selection
For modeling, a several step process was conducted. First, for the purposes of linear regression, the Credit Names and Groups were vectorized into binary variables. This resulted in a large feature space, exceeding 50 predictors, which led to multicollinearity issues. To correct for this, a stepwise regression was performed to reduce the Maximum VIF score to less than five (values that exceed five exhibit unwanted correlations between features). The results of the feature reduction for the Income dataset are displayed in Table 3, where the adjusted R2 was determined to be 0.729.
Regularization
In order to create a prediction model, test data was used to evaluate the model performance (i.e., adjusted R2). Regularization through Lasso and Ridge prevented the model from overfitting on training data. In Table 4, the results of the regularization are displayed across all datasets including the one prior to the BoxCox transformation. The adjusted R2 was calculated using the following formula with predictions based off of out-of-sample test data:
The best model was found to be Lasso post-BoxCox with stepwise feature reduction. The most dramatic change in model performance came from the BoxCox transformation with stepwise feature reduction being the second.
Forecasting
In the forecasting section of the application, users are allowed to predict the average credit earned per taxpayer. For instance, if the user inputs 1) Income dataset, 2) Year of 2025, 3) Group of $1-$99,999, and 4) Name of Investment Tax Credit, the app displays the following results:
For forecasting, once the user selects the dataset of interest (Income or Industry), the Group, the Credit Name, and the Tax Year, a plot is generated much like that of Figure 4. This plot shows the change in the Average Credit Earned per taxpayer versus the Number of Taxpayers. Since the Number of Taxpayers in future years is unknown, the tax professional has the option to choose the appropriate Average Credit prediction window (based on a 95% confidence interval) for any given Number of Taxpayers. For instance, in Figure 4, if there are 75 taxpayers, then the Average Credit Earned per taxpayer is estimated to be between $40,000 and $67,500.
Table 5 is supplementary to Figure 4. The table allows tax consultants to estimate the number of taxpayers for a given prediction year by referencing past Number of Taxpayers totals by Credit Name and Group.
Conclusion
As mentioned in the introduction, an Industry dataset was also used in the analysis and generated a model slightly more accurate than the one for Income. For both datasets, the data had to be transformed in order to overcome the abnormal distribution of the Amount of Credit and the missing values from the privacy issues. Also, the models explain approximately 70% of the variability in the test data when using a train/test split of 80:20. Since the model accuracies are below 80%, the best use for the forecast portion of the application is for signal comparison (i.e., can we expect credit to go up or down across years?).
Future Work
Better model performance could have been achieved using other machine learning techniques, such as ensembles, support vector machines, and neural networks. Ensembling seems particularly promising due to the categorical nature and skewness of the data. In addition, NYS Department of Taxation and Finance provides other datasets such as Credit Used, Taxation Basis, and Master Credit Utilization. Integrating this data into the app could fine-tune initial projections based on businesses’ accounting analytics. Lastly, another model could be used to predict the Number of Taxpayers in order to consolidate the forecast into a single credit range output.
Links & References
- Datasets Source: NYS Article 9-A
- New York State Tax Law: NYS Senate Article 9-A
- R Shiny App: NYS Tax Credit Predictions Analysis
- Github: NYS Tax Credit RShiny Project