{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Data Appendix: Pratts

\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## This file generates the tables from Pratts data that are reported in data appendix to \"Sweat Equity in U.S. Private Business\" " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\admin\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:8: FutureWarning: Passing a negative integer is deprecated in version 1.0 and will not be supported in future version. Instead, use None to not limit the column width.\n", " \n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import dask.dataframe as dd\n", "import re,string\n", "#import stats\n", "import os.path\n", "pd.options.display.float_format = '{:.3f}'.format\n", "pd.set_option('display.max_colwidth', -1)\n", "#from SCEconomy import *\n", "import seaborn as sns\n", "sns.set_style('whitegrid')\n", "pd.set_option('display.width', 1000)\n", "import swifter\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "mpl.rc(\"savefig\",dpi=200)\n", "from matplotlib import pyplot as plt\n", "# plt.rcParams[\"figure.figsize\"] = (10.,10.)\n", "import statsmodels.api as sm\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import HTML\n", "from IPython.core.interactiveshell import InteractiveShell\n", "InteractiveShell.ast_node_interactivity = \"all\"\n", "HTML('''\n", "
''')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df_baseline=[]\n", "df_target=[]\n", "def gini(series, weights):\n", " if series.size!=weights.size:\n", " print(\"Weights are not the same size as the series\")\n", " return\n", " sorted_series = series.sort_values()\n", " height, area = 0, 0\n", " for i in range(series.size):\n", " value = series[sorted_series.index[i]]\n", " wgt = weights[sorted_series.index[i]]\n", " height += wgt*value\n", " area += wgt*(height - value / 2)\n", " fair_area = height * weights.sum() / 2.\n", " return (fair_area - area) / fair_area\n", "\n", "\n", "def gini_alt(series):\n", " csum= 0.0\n", " N=len(series)\n", " for i in range(N):\n", " for j in range(N):\n", " value_i = series.iloc[i]\n", " value_j = series.iloc[j]\n", " csum+=np.abs(value_i-value_j)\n", " \n", " gini_val=0.5*(csum/(N)**2)/series.mean()\n", " \n", " return gini_val\n", "\n", "\n", "def Lorenz(series,quantiles):\n", " N=len(quantiles)\n", " Lz=np.zeros(N)\n", " for n in range(N):\n", " selection = series0:\n", " days=convert_to_days[sentence[s:e]]*int(re.findall(r'\\d+', numstr )[0])\n", " num_days=np.maximum(num_days,days)\n", " \n", " return num_days\n", "\n", "def get_distance(sentence):\n", " sentence=sentence.lower()\n", " pattern = 'mil|kilo|km'\n", " convert_to_miles={'mil':1.0,'kilo':0.621371,'km':0.621371}\n", " num_miles=0\n", " for match in re.finditer(pattern, sentence):\n", " s = match.start()\n", " e = match.end()\n", " numstr=sentence[np.maximum(0,s-4) :e]\n", " if len(re.findall(r'\\d+', numstr ))>0:\n", " miles=convert_to_miles[sentence[s:e]]*int(re.findall(r'\\d+', numstr )[0])\n", " num_miles=np.maximum(num_miles,miles)\n", " \n", " return num_miles\n", "\n", "\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Table A3. Statistics from Pratt’s Stats Database, 1994–2017 By Legal Structure and Industry\n", "We use all firms who report legal form of organization to be in C Corporation',S Corporation, Sole Proprietorship, Partnership,LLC and have a valid IntanglibleIntensity, that is, the ratio \"TotalIntangiblesPPA/TotalAssetsPPA\" is finite. To compute sales weight we use the variable \"NetSales\" normalized by \"GDPDeflator\" so that all sales are in 2007 dollars.## Read data from PrattStats,GDP deflator " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "data=pd.read_csv('../RawData/PRATTS/prattsdatabase.csv',encoding='latin-1') \n", "f = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "\n", "\n", "f2 = {'RelGoodwillIntensityPPA':['count','mean','median','std']}\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "GDPDeflator=pd.read_csv('../RawData/BEA/GDPDEFAnnual.csv',encoding='latin-1') \n", "GDPDeflator=GDPDeflator[:-1]\n", "GDPDeflator.year=GDPDeflator.year.astype(int)\n", "data['year'] = data['SaleDate'].str[-4:]\n", "data['year']=data['year'].astype(int)\n", "data['pricedef'] = data['year'].map(GDPDeflator.set_index('year')['GDPDEF2007'])\n", "data['RealNetSales']=data.NetSales/data.pricedef\n", "data['RealNetSales']=data['RealNetSales']/1000000" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9a72aba58da24ee9b284eb1b0f778431", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, description='Pandas Apply', max=25999.0, style=ProgressStyle(descripti…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c9fdf24876354497a5918268160382dd", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, description='Pandas Apply', max=25999.0, style=ProgressStyle(descripti…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "\n", "data['IntanglibleIntensityPPA']=data.TotalIntangiblesPPA/data.TotalAssetsPPA\n", "data['NonCompete'][data['NonCompete']=='Yes']=1.0\n", "data['NonCompete'][data['NonCompete']=='No']=0.0\n", "data['NetIncomeOverSalePrice']=(data.EarningsBeforeTaxes/data.MVICPrice)*100\n", "data['IdentifiableIntanglibleIntensityPPA']=100*data.TotalIdentifiableIntangiblesPPA/data.TotalAssetsPPA\n", "data['TotalIntangiblesFAPPARatio']=100*data['TotalIntangiblesPPA']/(data['TotalIntangiblesPPA']+data['FixedAssetsPPA'])\n", "data['GoodwillIntensityPPA']=100*data.GoodwillPPA/data.TotalAssetsPPA\n", "data['IntanglibleIntensityPPA']=100*data.TotalIntangiblesPPA/data.TotalAssetsPPA\n", "data['logIntant']=np.log(data.TotalIntangiblesPPA)\n", "data['TargetAge2']=data['TargetAge']**2\n", "data['IntanglibleSales']=100*data.TotalIntangiblesPPA/data.NetSales\n", "\n", "data['RelGoodwillIntensityPPA']=100*(data['GoodwillIntensityPPA']/data['IntanglibleIntensityPPA'])\n", "data['FixedIntensityPPA']=100*data.FixedAssetsPPA/data.TotalAssetsPPA\n", "data['FixedAssetsBM']=100*data.FixedAssets/data.FixedAssetsPPA\n", "\n", "data['LeveragePPA']=data.InterestBearingLiabilitiesPPA/data.TotalAssetsPPA\n", "data['Leverage']=data.LongTermLiabilities/data.TotalAssets\n", "data['Leverage'][np.isinf(data['Leverage'])]=np.nan\n", "\n", "data['EmploymentAgreementDescription']=data['EmploymentAgreementDescription'].astype(str)\n", "data[\"EmploymentAgreementLength\"] = data.EmploymentAgreementDescription.swifter.apply(get_duration)\n", "data['NonCompeteDescription']=data['NonCompeteDescription'].astype(str)\n", "data[\"NonCompeteDistance\"] = data.NonCompeteDescription.swifter.apply(get_distance)\n", "data['EmploymentAgreementAlt']=(data[\"EmploymentAgreementLength\"]>0)\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "naics_labels=['Agriculture, Forestry, Fishing and Hunting',\\\n", " 'Mining, Quarrying, and Oil and Gas Extraction',\\\n", " 'Utilities',\\\n", " 'Construction',\\\n", " 'NA1',\\\n", " 'Manufacturing',\\\n", " 'NA2',\\\n", " 'Wholesale Trade',\\\n", " 'Retail Trade',\\\n", " 'NA3',\\\n", " 'Transportation and Warehousing',\\\n", " 'NA4',\\\n", " 'Information',\\\n", " 'Finance and Insurance',\\\n", " 'Real Estate and Rental and Leasing',\\\n", " 'Professional, Scientific, and Technical Services',\\\n", " 'Management of Companies and Enterprises',\\\n", " 'Administrative and Support and Waste Management and Remediation Services',\\\n", " 'Educational Services',\\\n", " 'Health Care and Social Assistance',\\\n", " 'Arts, Entertainment, and Recreation',\\\n", " 'Accommodation and Food Service',\\\n", " 'Other Services','Public administration']\n", "\n", "\n", "naics_code=[11,21,22,23,24,31,35,42,44,46,48,50,51,52,53,54,55,56,61,62,71,72,81,83,92]\n", "n=24\n", "\n", "\n", "#naics_labels=['Ag. Mining and Utilities',\\\n", "# 'Consts and Mfg',\\\n", "# 'Trade and warehousing',\\\n", "# 'Information and FIRE',\\\n", "# 'RE',\\\n", "# 'Professional services',\\\n", "# 'Nonprof services']\n", "\n", "#naics_code=[11,23,42,51,53,54,57,92]\n", "\n", "data['TargetStructureAlt']=data['TargetStructure'].values\n", "sel=data['TargetStructure'].isin(['Partnership', 'Limited Partnership', 'LLP'])\n", "data.loc[sel,'TargetStructureAlt']='Partnership'\n", "sel=data['TargetStructure'].isin(['Consolidated', 'UK Corporation', 'PC','Non-Profit','Ltd','Limited Corporation'])\n", "data.loc[sel,'TargetStructureAlt']='Others'\n", "sel=data['TargetStructure'].isin(['C corporation'])\n", "data.loc[sel,'TargetStructureAlt']='C Corporation'\n", "data['naics_label']=pd.cut(data['TargetNAICS1']/10**10,naics_code[:n+1],labels=naics_labels[:n],include_lowest=True,right=False)\n", "data['naics_code_cat']=pd.cut(data['TargetNAICS1']/10**10,naics_code[:n+1],include_lowest=True,right=False)\n", "data['naics_2d']=pd.cut(data['TargetNAICS1']/10**10,naics_code[:n+1],labels=naics_code[:n],include_lowest=True,right=False)\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#data['naics_label']=data['naics_label'].astype(str)\n", "#merge_naics_list=['Mining, Quarrying, and Oil and Gas Extraction','Agriculture, Forestry, Fishing and Hunting','Utilities','Wholesale Trade','Educational Services','Arts, Entertainment, and Recreation','nan']\n", "#for naics in merge_naics_list:\n", "# sel=data['naics_label']==naics\n", "# data.loc[sel,'naics_label']='others'\n", " #data.loc[sel,'naics_label'].replace(naics,'others')\n", " # data.loc[sel,'naics_code_cat'].replace(naics,'others')\n", " # data.loc[sel,'naics_2d']=99\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "selection=selection&sel\n", "selPassThru=data['TargetStructureAlt'].isin(['S Corporation', 'Sole Proprietorship', 'Partnership'])\n", "data['TargetStructurePassThru']=data['TargetStructure'].values\n", "data.loc[selPassThru,'TargetStructurePassThru']=True\n", "data.loc[~selPassThru,'TargetStructurePassThru']=False\n", "selPassThru=data['TargetStructureAlt'].isin(['S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "data['TargetStructurePassThruLLC']=data['TargetStructure'].values\n", "data.loc[selPassThru,'TargetStructurePassThruLLC']=True\n", "data.loc[~selPassThru,'TargetStructurePassThruLLC']=False\n", "data['TargetStructureBus']=data['TargetStructure'].values\n", "data.loc[sel,'TargetStructureBus']='all_bus'\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "data['wgt_sales']=data['RealNetSales']/data[selection]['RealNetSales'].sum()*100\n", "selPassThru=data['TargetStructureAlt'].isin(['S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "selPassThru=selection&selPassThru\n", "data['wgt_sales_passthru']=data['RealNetSales']/data[selPassThru]['RealNetSales'].sum()*100\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Aggregates" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs685858.01064.00031.7798.919
Passthru, including LLCs886357.49863.22232.14524.963
All businesses1085457.58263.20832.130100.000
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 6858 58.010 64.000 31.779 8.919 \n", "Passthru, including LLCs 8863 57.498 63.222 32.145 24.963 \n", "All businesses 10854 57.582 63.208 32.130 100.000 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "temp1=data[selection][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[selection].TargetStructurePassThru).agg(f)\n", "temp1=temp1.iloc[1,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['Passthru, excluding LLCs']\n", "\n", "temp2=data[selection][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[selection].TargetStructurePassThruLLC).agg(f)\n", "temp2=temp2.iloc[1,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru, including LLCs']\n", "\n", "\n", "temp3=data[selection][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[selection].TargetStructureBus).agg(f)\n", "temp3=temp3.iloc[0,:].values\n", "temp3=pd.DataFrame(temp3,index=['count','mean','median','std','sales wgt']).T\n", "temp3.index=['All businesses']\n", "\n", "temp=pd.concat([temp1,temp2,temp3])\n", "temp['count']=temp['count'].astype(int)\n", "\n", "display(temp)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### All businesses by legal form" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Sole Proprietors114057.49763.79530.6540.225
Partnerships19756.57566.66732.2181.331
S corporation552158.16863.88931.9957.364
LLCs200555.74561.08133.31216.044
C corporations199157.95963.09232.06975.037
Total10854285.943318.524160.247100.000
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Sole Proprietors 1140 57.497 63.795 30.654 0.225 \n", "Partnerships 197 56.575 66.667 32.218 1.331 \n", "S corporation 5521 58.168 63.889 31.995 7.364 \n", "LLCs 2005 55.745 61.081 33.312 16.044 \n", "C corporations 1991 57.959 63.092 32.069 75.037 \n", "Total 10854 285.943 318.524 160.247 100.000 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "temp=data[selection][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[selection].TargetStructureAlt).agg(f)\n", "temp=temp.iloc[:,:].values\n", "temp=pd.DataFrame(temp,columns=['count','mean','median','std','sales wgt'])\n", "temp.index=['C corporations','LLCs','Partnerships','S corporation','Sole Proprietors']\n", "tempsum=temp.sum()\n", "tempsum=tempsum.values\n", "tempsum=pd.DataFrame(tempsum,index=['count','mean','median','std','sales wgt']).T\n", "tempsum.index=['Total']\n", "temp=pd.concat([temp,tempsum]) \n", "temp['count']=temp['count'].astype(int)\n", "\n", "display(temp.iloc[[4,2,3,1,0,5],:])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Pass-throughs by industry (NAICs)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Agriculture, Forestry, Fishing and Hunting1630.42835.23024.9470.729
Mining, Quarrying, and Oil and Gas Extraction1643.16441.80629.0336.512
Utilities1060.77366.55833.4850.102
Construction38369.28474.31237.9395.689
Manufacturing79754.47459.02529.30340.262
Wholesale Trade1754.82152.14728.8970.014
Retail Trade156954.17758.84230.0016.642
Transportation and Warehousing32766.23273.86725.4004.980
Information18980.83089.47422.53210.309
Finance and Insurance15585.52595.72625.2072.842
Real Estate and Rental and Leasing26876.29292.66031.0271.755
Professional, Scientific, and Technical Services46281.29989.53021.0274.875
Management of Companies and Enterprises1256.27164.00533.3905.252
Administrative and Support and Waste Management and Remediation Services103073.22879.83324.7392.796
Educational Services11559.07572.00034.2880.518
Health Care and Social Assistance45062.81668.93929.3592.774
Arts, Entertainment, and Recreation16845.76344.45630.8670.890
Accommodation and Food Service168941.83741.87530.1821.803
Other Services118745.46545.45531.3261.257
Total88601141.7561245.740552.95199.999
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Agriculture, Forestry, Fishing and Hunting 16 30.428 35.230 24.947 0.729 \n", "Mining, Quarrying, and Oil and Gas Extraction 16 43.164 41.806 29.033 6.512 \n", "Utilities 10 60.773 66.558 33.485 0.102 \n", "Construction 383 69.284 74.312 37.939 5.689 \n", "Manufacturing 797 54.474 59.025 29.303 40.262 \n", "Wholesale Trade 17 54.821 52.147 28.897 0.014 \n", "Retail Trade 1569 54.177 58.842 30.001 6.642 \n", "Transportation and Warehousing 327 66.232 73.867 25.400 4.980 \n", "Information 189 80.830 89.474 22.532 10.309 \n", "Finance and Insurance 155 85.525 95.726 25.207 2.842 \n", "Real Estate and Rental and Leasing 268 76.292 92.660 31.027 1.755 \n", "Professional, Scientific, and Technical Services 462 81.299 89.530 21.027 4.875 \n", "Management of Companies and Enterprises 12 56.271 64.005 33.390 5.252 \n", "Administrative and Support and Waste Management and Remediation Services 1030 73.228 79.833 24.739 2.796 \n", "Educational Services 115 59.075 72.000 34.288 0.518 \n", "Health Care and Social Assistance 450 62.816 68.939 29.359 2.774 \n", "Arts, Entertainment, and Recreation 168 45.763 44.456 30.867 0.890 \n", "Accommodation and Food Service 1689 41.837 41.875 30.182 1.803 \n", "Other Services 1187 45.465 45.455 31.326 1.257 \n", "Total 8860 1141.756 1245.740 552.951 99.999 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "selPassThru=data['TargetStructureAlt'].isin(['S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "selPassThru=selection&selPassThru\n", "temp=data[selPassThru][['IntanglibleIntensityPPA','wgt_sales_passthru']].groupby(data[selPassThru].naics_label).agg(f_pass)\n", "indexlist=temp.index.to_list()\n", "temp=temp.iloc[:,:].values\n", "temp=pd.DataFrame(temp,columns=['count','mean','median','std','sales wgt'])\n", "temp.index=indexlist\n", "temp['count']=temp['count'].astype(int)\n", "tempsum=temp.sum()\n", "tempsum=tempsum.values\n", "tempsum=pd.DataFrame(tempsum,index=['count','mean','median','std','sales wgt']).T\n", "tempsum.index=['Total']\n", "temp=pd.concat([temp,tempsum]) \n", "temp['count']=temp['count'].astype(int)\n", "display(temp[~np.isnan(temp['mean'])] )\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Agriculture, Forestry, Fishing and Hunting922.84418.15822.0660.215
Mining, Quarrying, and Oil and Gas Extraction542.87736.64726.0790.569
Utilities861.63772.50036.9610.033
Construction28970.14674.08240.69910.792
Manufacturing54953.55857.50028.51322.676
Wholesale Trade1254.41448.63427.7640.027
Retail Trade102955.33160.00029.40219.210
Transportation and Warehousing25067.51675.19224.9599.914
Information10379.59986.00023.2024.032
Finance and Insurance11687.89695.78922.0255.799
Real Estate and Rental and Leasing14073.43490.33931.5900.730
Professional, Scientific, and Technical Services29480.88488.42020.3976.544
Management of Companies and Enterprises540.98360.15231.3556.884
Administrative and Support and Waste Management and Remediation Services65573.63381.75024.5894.043
Educational Services7359.58872.00031.4520.502
Health Care and Social Assistance27361.69866.60130.9031.747
Arts, Entertainment, and Recreation9441.68543.53031.9740.467
Accommodation and Food Service93141.76742.36029.9713.625
Other Services68545.43445.94630.7832.189
Total55201114.9211215.600544.68499.999
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Agriculture, Forestry, Fishing and Hunting 9 22.844 18.158 22.066 0.215 \n", "Mining, Quarrying, and Oil and Gas Extraction 5 42.877 36.647 26.079 0.569 \n", "Utilities 8 61.637 72.500 36.961 0.033 \n", "Construction 289 70.146 74.082 40.699 10.792 \n", "Manufacturing 549 53.558 57.500 28.513 22.676 \n", "Wholesale Trade 12 54.414 48.634 27.764 0.027 \n", "Retail Trade 1029 55.331 60.000 29.402 19.210 \n", "Transportation and Warehousing 250 67.516 75.192 24.959 9.914 \n", "Information 103 79.599 86.000 23.202 4.032 \n", "Finance and Insurance 116 87.896 95.789 22.025 5.799 \n", "Real Estate and Rental and Leasing 140 73.434 90.339 31.590 0.730 \n", "Professional, Scientific, and Technical Services 294 80.884 88.420 20.397 6.544 \n", "Management of Companies and Enterprises 5 40.983 60.152 31.355 6.884 \n", "Administrative and Support and Waste Management and Remediation Services 655 73.633 81.750 24.589 4.043 \n", "Educational Services 73 59.588 72.000 31.452 0.502 \n", "Health Care and Social Assistance 273 61.698 66.601 30.903 1.747 \n", "Arts, Entertainment, and Recreation 94 41.685 43.530 31.974 0.467 \n", "Accommodation and Food Service 931 41.767 42.360 29.971 3.625 \n", "Other Services 685 45.434 45.946 30.783 2.189 \n", "Total 5520 1114.921 1215.600 544.684 99.999 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grp=['S Corporation']\n", "selPassThruWoLLC=data['TargetStructureAlt'].isin(grp)\n", "selPassThruWoLLC=selection&selPassThruWoLLC\n", "data['wgt_sales_passthruWoLLC']=data['RealNetSales']/data[selPassThruWoLLC]['RealNetSales'].sum()*100\n", "\n", "f_passWoLLC = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales_passthruWoLLC':['sum']}\n", "selPassThruWoLLC=data['TargetStructureAlt'].isin(grp)\n", "selPassThruWoLLC=selection&selPassThruWoLLC\n", "temp=data[selPassThruWoLLC][['IntanglibleIntensityPPA','wgt_sales_passthruWoLLC']].groupby(data[selPassThruWoLLC].naics_label).agg(f_passWoLLC)\n", "indexlist=temp.index.to_list()\n", "temp=temp.iloc[:,:].values\n", "temp=pd.DataFrame(temp,columns=['count','mean','median','std','sales wgt'])\n", "temp.index=indexlist\n", "temp['count']=temp['count'].astype(int)\n", "tempsum=temp.sum()\n", "tempsum=tempsum.values\n", "tempsum=pd.DataFrame(tempsum,index=['count','mean','median','std','sales wgt']).T\n", "tempsum.index=['Total']\n", "temp=pd.concat([temp,tempsum]) \n", "temp['count']=temp['count'].astype(int)\n", "display(temp[~np.isnan(temp['mean'])] )\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Breakdown of Intangible Assets\n", "\n", "Below we show summary statistics for different types of intangibles. For each type we compute the share in total intangibles for observations with positive values. \n", "\n", "* **Customer Relationships / Lists PPA** :The value attributed to any customer relationships or customer list acquired as part of the acquisition.\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "* **Backlog PPA** :Any acquired purchase orders or booked sales on orders that have not been fully completed. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "* **Developed / Existing Technology PPA** :Any acquired developed/completed technology, core technology, and/or acquired or purchased technology. Technology that is in the process of being developed is included in In-Process R&D.\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "* **In-Process R&D PPA** :\tIntangible assets acquired relating to any uncompleted/in process research and development.\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "* **Trade Names / Trademarks PPA** :\tThe value of acquired trademarks/service marks to identify and/or differentiate goods and services or business trade names. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "* **Noncompete Agreements PPA**\tThe value placed on an agreement with the selling party not to compete with the purchaser, usually for a certain period of time and usually in a specified geographic area. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "* **Other Intangibles PPA** :\tAny other intangible asset acquired that is not listed in the preceding fields. \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n", "\t\t\t\t\t\t\t\n", "* **Goodwill PPA**\tRepresents the excess of the aggregate purchase price over the fair value of net assets of the acquired business.\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CustomerRelationshipsListsPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs16032.01627.80925.0202.364
Passthru, including LLCs28133.47728.18827.4299.451
All businesses59029.01323.99423.40734.191
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 160 32.016 27.809 25.020 2.364 \n", "Passthru, including LLCs 281 33.477 28.188 27.429 9.451 \n", "All businesses 590 29.013 23.994 23.407 34.191 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation30924.95421.17518.14224.739
LLC12135.40828.46230.3227.087
Partnership1034.82233.19727.4530.138
S Corporation14532.36328.18825.1112.224
Sole Proprietorship516.33522.38812.4970.002
Total590------34.191
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 309 24.954 21.175 18.142 24.739 \n", "LLC 121 35.408 28.462 30.322 7.087 \n", "Partnership 10 34.822 33.197 27.453 0.138 \n", "S Corporation 145 32.363 28.188 25.111 2.224 \n", "Sole Proprietorship 5 16.335 22.388 12.497 0.002 \n", "Total 590 -- -- -- 34.191 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "BacklogPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs166.1931.73615.7160.850
Passthru, including LLCs316.8742.20115.1742.675
All businesses714.7902.20110.3988.068
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 16 6.193 1.736 15.716 0.850 \n", "Passthru, including LLCs 31 6.874 2.201 15.174 2.675 \n", "All businesses 71 4.790 2.201 10.398 8.068 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation403.1752.0813.2895.392
LLC157.6013.14715.0871.826
Partnership10.3180.318NaN0.019
S Corporation156.5851.75516.1870.830
Total71------8.068
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 40 3.175 2.081 3.289 5.392 \n", "LLC 15 7.601 3.147 15.087 1.826 \n", "Partnership 1 0.318 0.318 NaN 0.019 \n", "S Corporation 15 6.585 1.755 16.187 0.830 \n", "Total 71 -- -- -- 8.068 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "DevelopedExistingTechnologyPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs7618.71511.02422.8640.875
Passthru, including LLCs12719.06311.66222.6285.852
All businesses38022.85413.79024.22418.212
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 76 18.715 11.024 22.864 0.875 \n", "Passthru, including LLCs 127 19.063 11.662 22.628 5.852 \n", "All businesses 380 22.854 13.790 24.224 18.212 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation25324.75715.36124.81212.360
LLC5119.58212.12122.4874.977
S Corporation7319.39012.31523.0810.874
Sole Proprietorship32.2801.2381.8060.001
Total380------18.212
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 253 24.757 15.361 24.812 12.360 \n", "LLC 51 19.582 12.121 22.487 4.977 \n", "S Corporation 73 19.390 12.315 23.081 0.874 \n", "Sole Proprietorship 3 2.280 1.238 1.806 0.001 \n", "Total 380 -- -- -- 18.212 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "InProcessRandDPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs822.9805.66331.6540.119
Passthru, including LLCs1222.5127.02729.6852.907
All businesses9028.71114.23631.4096.051
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 8 22.980 5.663 31.654 0.119 \n", "Passthru, including LLCs 12 22.512 7.027 29.685 2.907 \n", "All businesses 90 28.711 14.236 31.409 6.051 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation7829.66517.16231.7413.144
LLC421.5759.88029.8562.788
S Corporation822.9805.66331.6540.119
Total90------6.051
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 78 29.665 17.162 31.741 3.144 \n", "LLC 4 21.575 9.880 29.856 2.788 \n", "S Corporation 8 22.980 5.663 31.654 0.119 \n", "Total 90 -- -- -- 6.051 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TradeNamesTradeMarksPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs17819.54913.82619.5332.390
Passthru, including LLCs27619.31911.66322.6849.149
All businesses52316.2108.69620.38636.141
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 178 19.549 13.826 19.533 2.390 \n", "Passthru, including LLCs 276 19.319 11.663 22.684 9.149 \n", "All businesses 523 16.210 8.696 20.386 36.141 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation24712.7355.96116.84226.992
LLC9818.9018.58427.6106.759
Partnership710.0302.97116.2630.135
S Corporation15518.99413.88918.8812.250
Sole Proprietorship1629.08725.62224.3670.005
Total523------36.141
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 247 12.735 5.961 16.842 26.992 \n", "LLC 98 18.901 8.584 27.610 6.759 \n", "Partnership 7 10.030 2.971 16.263 0.135 \n", "S Corporation 155 18.994 13.889 18.881 2.250 \n", "Sole Proprietorship 16 29.087 25.622 24.367 0.005 \n", "Total 523 -- -- -- 36.141 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "NonCompeteAgreementsPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs197223.26113.33325.1792.296
Passthru, including LLCs236422.43812.19525.0113.885
All businesses283123.08012.92225.9637.317
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 1972 23.261 13.333 25.179 2.296 \n", "Passthru, including LLCs 2364 22.438 12.195 25.011 3.885 \n", "All businesses 2831 23.080 12.922 25.963 7.317 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation46726.32616.66730.1503.433
LLC39218.3007.69223.7461.589
Partnership7025.50318.29623.1640.135
S Corporation133021.78510.91425.5622.038
Sole Proprietorship57226.41819.16424.2300.123
Total2831------7.317
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 467 26.326 16.667 30.150 3.433 \n", "LLC 392 18.300 7.692 23.746 1.589 \n", "Partnership 70 25.503 18.296 23.164 0.135 \n", "S Corporation 1330 21.785 10.914 25.562 2.038 \n", "Sole Proprietorship 572 26.418 19.164 24.230 0.123 \n", "Total 2831 -- -- -- 7.317 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "OtherIntangiblesPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs30442.11829.85136.0531.312
Passthru, including LLCs46143.29031.03436.5555.303
All businesses68138.35924.24235.95523.591
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 304 42.118 29.851 36.053 1.312 \n", "Passthru, including LLCs 461 43.290 31.034 36.555 5.303 \n", "All businesses 681 38.359 24.242 35.955 23.591 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation22028.02713.17732.38518.288
LLC15745.55932.73537.5213.991
Partnership1129.58617.29032.4400.029
S Corporation26042.44129.85136.5851.276
Sole Proprietorship3343.74843.33332.9840.007
Total681------23.591
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 220 28.027 13.177 32.385 18.288 \n", "LLC 157 45.559 32.735 37.521 3.991 \n", "Partnership 11 29.586 17.290 32.440 0.029 \n", "S Corporation 260 42.441 29.851 36.585 1.276 \n", "Sole Proprietorship 33 43.748 43.333 32.984 0.007 \n", "Total 681 -- -- -- 23.591 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "GoodwillPPA\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru, excluding LLCs373285.06997.91722.2926.593
Passthru, including LLCs506385.70298.97422.35219.146
All businesses637082.67496.97024.18987.521
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru, excluding LLCs 3732 85.069 97.917 22.292 6.593 \n", "Passthru, including LLCs 5063 85.702 98.974 22.352 19.146 \n", "All businesses 6370 82.674 96.970 24.189 87.521 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
C Corporation130770.94874.01727.27568.376
LLC133187.476100.00022.43212.553
Partnership10674.51681.87324.9840.402
S Corporation289486.70999.50221.9176.034
Sole Proprietorship73280.11289.34222.2310.156
Total6370------87.521
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "C Corporation 1307 70.948 74.017 27.275 68.376 \n", "LLC 1331 87.476 100.000 22.432 12.553 \n", "Partnership 106 74.516 81.873 24.984 0.402 \n", "S Corporation 2894 86.709 99.502 21.917 6.034 \n", "Sole Proprietorship 732 80.112 89.342 22.231 0.156 \n", "Total 6370 -- -- -- 87.521 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "varlist=['CustomerRelationshipsListsPPA','BacklogPPA','DevelopedExistingTechnologyPPA','InProcessRandDPPA','TradeNamesTradeMarksPPA','NonCompeteAgreementsPPA','OtherIntangiblesPPA','GoodwillPPA']\n", "for var in varlist:\n", " print(var)\n", " data[var+'Intensity']=data[var]/data['TotalIntangiblesPPA']*100\n", " var=var+'Intensity'\n", " selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", " sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", " selection=selection&sel\n", " sel2=selection&(data[selection][var]>0)\n", "\n", " f = {var:['count','mean','median','std'],'wgt_sales':['sum']}\n", "\n", "\n", " temp1=data[sel2][[var,'wgt_sales']].groupby(data[sel2].TargetStructurePassThru).agg(f)\n", " temp1=temp1.iloc[1,:].values\n", " temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", " temp1.index=['Passthru, excluding LLCs']\n", "\n", " temp2=data[sel2][[var,'wgt_sales']].groupby(data[sel2].TargetStructurePassThruLLC).agg(f)\n", " temp2=temp2.iloc[1,:].values\n", " temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", " temp2.index=['Passthru, including LLCs']\n", "\n", "\n", " temp3=data[sel2][[var,'wgt_sales']].groupby(data[sel2].TargetStructureBus).agg(f)\n", " temp3=temp3.iloc[0,:].values\n", " temp3=pd.DataFrame(temp3,index=['count','mean','median','std','sales wgt']).T\n", " temp3.index=['All businesses']\n", "\n", " temp=pd.concat([temp1,temp2,temp3])\n", " temp['count']=temp['count'].astype(int)\n", " \n", "\n", " display(temp)\n", " \n", " temp=data[sel2][[var,'wgt_sales']].groupby(data[sel2].TargetStructureAlt).agg(f)\n", " to_list=temp.index.to_list()\n", " temp=temp.iloc[:,:].values\n", " temp=pd.DataFrame(temp,columns=['count','mean','median','std','sales wgt'])\n", " temp.index=to_list\n", " tempsum=temp.sum()\n", " tempsum=tempsum.values\n", " tempsum=pd.DataFrame(tempsum,index=['count','mean','median','std','sales wgt']).T\n", " tempsum.index=['Total']\n", " temp=pd.concat([temp,tempsum]) \n", " temp['count']=temp['count'].astype(int)\n", " temp.iloc[-1,1]='--'\n", " temp.iloc[-1,2]='--'\n", " temp.iloc[-1,3]='--'\n", " \n", " display(temp)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Business Noncompete\n", "Agreement with the selling party not to compete with the purchaser, usually for a certain period of time and usually in a specified geographic area. Pratts provides information on whether there was a a Non compete or not, and if yes, in some cases its description such as value/length of time.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Intangible Intensity\n", "\n", "Below we show summary statistics for intangible intensity for businesses broken down by whether they have a business noncompete\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru excluding LLCs without NonCompete agreements58157.01162.15531.4184.867
Passthru excluding LLCs with NonCompete agreement and duration = 02556.22861.71429.8310.011
Passthru excluding LLCs with NoNonCompete but no description of terms31462.48467.79227.2751.182
Passthru excluding LLCs with NonCompete agreement with strictly positive duration593857.87963.81932.0312.860
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru excluding LLCs without NonCompete agreements 581 57.011 62.155 31.418 4.867 \n", "Passthru excluding LLCs with NonCompete agreement and duration = 0 25 56.228 61.714 29.831 0.011 \n", "Passthru excluding LLCs with NoNonCompete but no description of terms 314 62.484 67.792 27.275 1.182 \n", "Passthru excluding LLCs with NonCompete agreement with strictly positive duration 5938 57.879 63.819 32.031 2.860 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru including LLCs without NonCompete agreements83457.36262.35831.63118.724
Passthru including LLCs with NonCompete agreement and duration = 03555.38060.00032.7650.028
Passthru including LLCs with NonCompete but no description of terms37962.01467.42327.9891.411
Passthru including LLCs with NonCompete agreement with strictly positive duration761557.29863.07732.3794.801
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru including LLCs without NonCompete agreements 834 57.362 62.358 31.631 18.724 \n", "Passthru including LLCs with NonCompete agreement and duration = 0 35 55.380 60.000 32.765 0.028 \n", "Passthru including LLCs with NonCompete but no description of terms 379 62.014 67.423 27.989 1.411 \n", "Passthru including LLCs with NonCompete agreement with strictly positive duration 7615 57.298 63.077 32.379 4.801 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
All businesses without NonCompete agreements157859.89366.70331.79589.710
All businesses with NonCompete agreement and duration = 04455.64560.85731.7070.034
All businesses with NonCompete but no description of terms50262.13168.28928.2233.423
All businesses with NonCompete agreement with strictly positive duration873056.91362.49432.3666.833
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "All businesses without NonCompete agreements 1578 59.893 66.703 31.795 89.710 \n", "All businesses with NonCompete agreement and duration = 0 44 55.645 60.857 31.707 0.034 \n", "All businesses with NonCompete but no description of terms 502 62.131 68.289 28.223 3.423 \n", "All businesses with NonCompete agreement with strictly positive duration 8730 56.913 62.494 32.366 6.833 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntanglibleIntensityPPAwgt_sales
countmeanmedianstdsum
TargetStructureAltNonCompeteAlt
C CorporationNo Agreement74462.72970.72831.76070.986
NonCompete with strictly positive duration111554.28757.50032.1702.032
NonCompete with duration = 0956.67669.05028.9760.005
NonCompete with no description of terms12362.49470.69029.0472.013
LLCNo Agreement25358.16864.35532.16213.857
NonCompete with strictly positive duration167755.23960.50633.5121.941
NonCompete with duration = 01053.26054.44440.9330.017
NonCompete with no description of terms6559.74165.40031.3440.229
PartnershipNo Agreement2858.69470.36029.7111.171
NonCompete with strictly positive duration15054.29164.57632.9850.131
NonCompete with no description of terms1971.47977.14326.2180.028
S CorporationNo Agreement45658.26662.15930.8243.675
NonCompete with strictly positive duration481758.03864.00032.2622.537
NonCompete with duration = 02355.91861.71430.1580.010
NonCompete with no description of terms22560.98265.67228.6191.142
Sole ProprietorshipNo Agreement9750.62660.00034.1030.020
NonCompete with strictly positive duration97157.64763.05530.7020.192
NonCompete with duration = 0259.79459.79436.3490.000
NonCompete with no description of terms7064.87067.73622.3820.012
\n", "
" ], "text/plain": [ " IntanglibleIntensityPPA wgt_sales\n", " count mean median std sum\n", "TargetStructureAlt NonCompeteAlt \n", "C Corporation No Agreement 744 62.729 70.728 31.760 70.986 \n", " NonCompete with strictly positive duration 1115 54.287 57.500 32.170 2.032 \n", " NonCompete with duration = 0 9 56.676 69.050 28.976 0.005 \n", " NonCompete with no description of terms 123 62.494 70.690 29.047 2.013 \n", "LLC No Agreement 253 58.168 64.355 32.162 13.857 \n", " NonCompete with strictly positive duration 1677 55.239 60.506 33.512 1.941 \n", " NonCompete with duration = 0 10 53.260 54.444 40.933 0.017 \n", " NonCompete with no description of terms 65 59.741 65.400 31.344 0.229 \n", "Partnership No Agreement 28 58.694 70.360 29.711 1.171 \n", " NonCompete with strictly positive duration 150 54.291 64.576 32.985 0.131 \n", " NonCompete with no description of terms 19 71.479 77.143 26.218 0.028 \n", "S Corporation No Agreement 456 58.266 62.159 30.824 3.675 \n", " NonCompete with strictly positive duration 4817 58.038 64.000 32.262 2.537 \n", " NonCompete with duration = 0 23 55.918 61.714 30.158 0.010 \n", " NonCompete with no description of terms 225 60.982 65.672 28.619 1.142 \n", "Sole Proprietorship No Agreement 97 50.626 60.000 34.103 0.020 \n", " NonCompete with strictly positive duration 971 57.647 63.055 30.702 0.192 \n", " NonCompete with duration = 0 2 59.794 59.794 36.349 0.000 \n", " NonCompete with no description of terms 70 64.870 67.736 22.382 0.012 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "data['NonCompete']=data['NonCompete'].replace(0,False)\n", "data['NonCompete']=data['NonCompete'].replace(1,True)\n", "data['NonCompete']=data['NonCompete'].astype(bool)\n", "data['NonCompeteAlt']=np.NaN\n", "sel=(data['NonCompete']==True)&(data.NonCompeteLength>0)\n", "data.loc[sel,'NonCompeteAlt']='NonCompete with strictly positive duration'\n", "sel=(data['NonCompete']==True)&(data.NonCompeteLength==0) \n", "data.loc[sel,'NonCompeteAlt']='NonCompete with duration = 0'\n", "sel=(data['NonCompete']==True)& np.isnan(data.NonCompeteLength) \n", "data.loc[sel,'NonCompeteAlt']='NonCompete with no description of terms'\n", "sel=(data['NonCompete']==False)\n", "data.loc[sel,'NonCompeteAlt']='No Agreement'\n", "\n", "data['NonCompeteLength']=data['NonCompeteLength']*30\n", "\n", "\n", "#(data.NonCompeteLength>0)\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "\n", "sel2=selection&sel&data.TargetStructurePassThru\n", "\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f)\n", "#print(temp)\n", "temp1=[]\n", "temp1=temp.iloc[3,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['Passthru excluding LLCs with NoNonCompete but no description of terms']\n", "\n", "temp2=[]\n", "temp2=temp.iloc[2,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru excluding LLCs with NonCompete agreement and duration = 0']\n", "\n", "\n", "temp3=[]\n", "temp3=temp.iloc[1,:].values\n", "temp3=pd.DataFrame(temp3,index=['count','mean','median','std','sales wgt']).T\n", "temp3.index=['Passthru excluding LLCs with NonCompete agreement with strictly positive duration']\n", "\n", "\n", "temp4=[]\n", "temp4=temp.iloc[0,:].values\n", "temp4=pd.DataFrame(temp4,index=['count','mean','median','std','sales wgt']).T\n", "temp4.index=['Passthru excluding LLCs without NonCompete agreements']\n", "\n", "\n", "temp=pd.concat([temp4,temp2,temp1,temp3])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "\n", "sel2=selection&sel&data.TargetStructurePassThruLLC\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "temp1=[]\n", "temp1=temp.iloc[3,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['Passthru including LLCs with NonCompete but no description of terms']\n", "\n", "temp2=[]\n", "temp2=temp.iloc[2,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru including LLCs with NonCompete agreement and duration = 0']\n", "\n", "\n", "temp3=[]\n", "temp3=temp.iloc[1,:].values\n", "temp3=pd.DataFrame(temp3,index=['count','mean','median','std','sales wgt']).T\n", "temp3.index=['Passthru including LLCs with NonCompete agreement with strictly positive duration']\n", "\n", "\n", "temp4=[]\n", "temp4=temp.iloc[0,:].values\n", "temp4=pd.DataFrame(temp4,index=['count','mean','median','std','sales wgt']).T\n", "temp4.index=['Passthru including LLCs without NonCompete agreements']\n", "\n", "\n", "temp=pd.concat([temp4,temp2,temp1,temp3])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel&data.TargetStructureBus\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "temp1=[]\n", "temp1=temp.iloc[3,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['All businesses with NonCompete but no description of terms']\n", "\n", "temp2=[]\n", "temp2=temp.iloc[2,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['All businesses with NonCompete agreement and duration = 0']\n", "\n", "\n", "temp3=[]\n", "temp3=temp.iloc[1,:].values\n", "temp3=pd.DataFrame(temp3,index=['count','mean','median','std','sales wgt']).T\n", "temp3.index=['All businesses with NonCompete agreement with strictly positive duration']\n", "\n", "\n", "temp4=[]\n", "temp4=temp.iloc[0,:].values\n", "temp4=pd.DataFrame(temp4,index=['count','mean','median','std','sales wgt']).T\n", "temp4.index=['All businesses without NonCompete agreements']\n", "\n", "\n", "temp=pd.concat([temp4,temp2,temp1,temp3])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "\n", "sel2=selection&sel\n", "\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby([data[sel2].TargetStructureAlt,data[sel2].NonCompeteAlt] ).agg(f)\n", "\n", "display(temp)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Terms of Contract: Length of contract\n", "Below we describe statistics for the length of the NonCompete in **days**" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru excluding LLCs with NonCompete59381612.9981800.0001251.6402.860
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru excluding LLCs with NonCompete 5938 1612.998 1800.000 1251.640 2.860 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru including LLCs with NonCompete76151589.6221800.0001282.7464.801
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru including LLCs with NonCompete 7615 1589.622 1800.000 1282.746 4.801 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
All business including LLCs with NonCompete87301595.5021800.0001272.9226.833
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "All business including LLCs with NonCompete 8730 1595.502 1800.000 1272.922 6.833 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NonCompeteLengthwgt_sales
countmeanmedianstdsum
TargetStructureAlt
C Corporation11151635.6591800.0001203.4682.032
LLC16771506.8521080.0001384.5181.941
Partnership1501725.2001800.0001595.2840.131
S Corporation48171601.2041800.0001292.4762.537
Sole Proprietorship9711654.1711800.000948.3700.192
\n", "
" ], "text/plain": [ " NonCompeteLength wgt_sales\n", " count mean median std sum\n", "TargetStructureAlt \n", "C Corporation 1115 1635.659 1800.000 1203.468 2.032 \n", "LLC 1677 1506.852 1080.000 1384.518 1.941 \n", "Partnership 150 1725.200 1800.000 1595.284 0.131 \n", "S Corporation 4817 1601.204 1800.000 1292.476 2.537 \n", "Sole Proprietorship 971 1654.171 1800.000 948.370 0.192 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = {'NonCompeteLength':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'NonCompeteLength':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) ) & (data.NonCompeteAlt=='NonCompete with strictly positive duration')\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "\n", "sel2=selection&sel&data.TargetStructurePassThru\n", "temp=data[sel2][['NonCompeteLength','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru excluding LLCs with NonCompete']\n", "\n", "temp=pd.concat([temp2])\n", "\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "\n", "sel2=selection&sel&data.TargetStructurePassThruLLC\n", "temp=data[sel2][['NonCompeteLength','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru including LLCs with NonCompete']\n", "\n", "temp=pd.concat([temp2])\n", "\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel&data.TargetStructureBus\n", "temp=data[sel2][['NonCompeteLength','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['All business including LLCs with NonCompete']\n", "\n", "temp=pd.concat([temp2])\n", "\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "\n", "sel2=selection&sel\n", "\n", "temp=data[sel2][['NonCompeteLength','wgt_sales']].groupby([data[sel2].TargetStructureAlt] ).agg(f)\n", "\n", "display(temp)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Terms of Contract: radius \n", "Below we describe statistics for the radius of the NonCompete in **miles**. There are several observations where the radius is described as a list of counties/states. We drop those when we construct the stats below." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru excluding LLCs with NonCompete488939.91320.00064.2181.808
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru excluding LLCs with NonCompete 4889 39.913 20.000 64.218 1.808 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru including LLCs with NonCompete632639.26420.00065.6932.200
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru including LLCs with NonCompete 6326 39.264 20.000 65.693 2.200 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
All business with NonCompete716339.39720.00066.3312.538
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "All business with NonCompete 7163 39.397 20.000 66.331 2.538 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NonCompeteDistancewgt_sales
countmeanmedianstdsum
TargetStructureAlt
C Corporation83740.40420.00070.9990.338
LLC143737.05720.00070.4580.392
Partnership11928.50420.00043.8660.029
S Corporation399940.74620.00065.2601.626
Sole Proprietorship77137.35020.00061.1680.154
\n", "
" ], "text/plain": [ " NonCompeteDistance wgt_sales\n", " count mean median std sum\n", "TargetStructureAlt \n", "C Corporation 837 40.404 20.000 70.999 0.338 \n", "LLC 1437 37.057 20.000 70.458 0.392 \n", "Partnership 119 28.504 20.000 43.866 0.029 \n", "S Corporation 3999 40.746 20.000 65.260 1.626 \n", "Sole Proprietorship 771 37.350 20.000 61.168 0.154 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = {'NonCompeteDistance':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'NonCompeteDistance':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )&(data[\"NonCompeteDistance\"]>0)& (data.NonCompeteAlt=='NonCompete with strictly positive duration')\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "\n", "sel2=selection&sel&data.TargetStructurePassThru&(data[\"NonCompeteDistance\"]>0)\n", "temp=data[sel2][['NonCompeteDistance','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "\n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru excluding LLCs with NonCompete']\n", "\n", "temp=pd.concat([temp2])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "\n", "sel2=selection&sel&data.TargetStructurePassThruLLC\n", "temp=data[sel2][['NonCompeteDistance','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru including LLCs with NonCompete']\n", "\n", "temp=pd.concat([temp2])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel&data.TargetStructureBus\n", "temp=data[sel2][['NonCompeteDistance','wgt_sales']].groupby(data[sel2].NonCompeteAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['All business with NonCompete']\n", "\n", "temp=pd.concat([temp2])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel\n", "\n", "temp=data[sel2][['NonCompeteDistance','wgt_sales']].groupby([data[sel2].TargetStructureAlt] ).agg(f)\n", "\n", "display(temp)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Owner Consulting Agreements\n", "An agreement between the buyer and seller for the seller's personal services to be provided to the buyer either as an employee or consultant after the sale of the business." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Intangible Intensity\n", "Below we show summary statistics for intangible intensity for businesses broken down by whether they have a owner consulting agreement" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru excluding LLCs without consulting agreements312658.20564.23430.2507.038
Passthru excluding LLCs with consulting agreements373257.84863.63633.0101.882
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru excluding LLCs without consulting agreements 3126 58.205 64.234 30.250 7.038 \n", "Passthru excluding LLCs with consulting agreements 3732 57.848 63.636 33.010 1.882 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru including LLCs without consulting agreements383758.39664.72130.48722.677
Passthru including LLCs with consulting agreements502656.81262.40833.3422.287
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru including LLCs without consulting agreements 3837 58.396 64.721 30.487 22.677 \n", "Passthru including LLCs with consulting agreements 5026 56.812 62.408 33.342 2.287 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
All business without consulting agreements512758.71964.91230.77497.188
All business including LLCs with consulting agreements572756.56561.84533.2662.812
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "All business without consulting agreements 5127 58.719 64.912 30.774 97.188 \n", "All business including LLCs with consulting agreements 5727 56.565 61.845 33.266 2.812 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntanglibleIntensityPPAwgt_sales
countmeanmedianstdsum
TargetStructureAltEmploymentAgreementAlt
C CorporationFalse129059.68165.88131.60674.511
True70154.79158.18232.6890.526
LLCFalse71159.23565.84431.51715.639
True129453.82758.50334.1190.405
PartnershipFalse11461.71271.03429.5651.296
True8349.51850.48034.4890.034
S CorporationFalse239258.00463.59730.4555.607
True312958.29364.00033.1271.757
Sole ProprietorshipFalse62058.33664.77729.5770.134
True52056.49662.50031.8900.091
\n", "
" ], "text/plain": [ " IntanglibleIntensityPPA wgt_sales\n", " count mean median std sum\n", "TargetStructureAlt EmploymentAgreementAlt \n", "C Corporation False 1290 59.681 65.881 31.606 74.511 \n", " True 701 54.791 58.182 32.689 0.526 \n", "LLC False 711 59.235 65.844 31.517 15.639 \n", " True 1294 53.827 58.503 34.119 0.405 \n", "Partnership False 114 61.712 71.034 29.565 1.296 \n", " True 83 49.518 50.480 34.489 0.034 \n", "S Corporation False 2392 58.004 63.597 30.455 5.607 \n", " True 3129 58.293 64.000 33.127 1.757 \n", "Sole Proprietorship False 620 58.336 64.777 29.577 0.134 \n", " True 520 56.496 62.500 31.890 0.091 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "data['EmploymentAgreement']=data['EmploymentAgreement'].replace(0,'False')\n", "data['EmploymentAgreement']=data['EmploymentAgreement'].replace(1,'True')\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "\n", "sel2=selection&sel&data.TargetStructurePassThru\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[sel2].EmploymentAgreementAlt).agg(f) \n", "\n", "\n", "temp1=[]\n", "temp1=temp.iloc[0,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['Passthru excluding LLCs without consulting agreements']\n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[1,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru excluding LLCs with consulting agreements']\n", "\n", "temp=pd.concat([temp1,temp2])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "\n", "sel2=selection&sel&data.TargetStructurePassThruLLC\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[sel2].EmploymentAgreementAlt).agg(f) \n", "\n", "\n", "temp1=[]\n", "temp1=temp.iloc[0,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['Passthru including LLCs without consulting agreements']\n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[1,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru including LLCs with consulting agreements']\n", "\n", "temp=pd.concat([temp1,temp2])\n", "temp['count']=temp['count'].astype(int)\n", "\n", "\n", "display(temp)\n", "\n", "\n", "sel2=selection&sel&data.TargetStructureBus\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(data[sel2].EmploymentAgreementAlt).agg(f) \n", "\n", "temp1=[]\n", "temp1=temp.iloc[0,:].values\n", "temp1=pd.DataFrame(temp1,index=['count','mean','median','std','sales wgt']).T\n", "temp1.index=['All business without consulting agreements']\n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[1,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['All business including LLCs with consulting agreements']\n", "\n", "temp=pd.concat([temp1,temp2])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel\n", "\n", "temp=data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby([data[sel2].TargetStructureAlt,data[sel2].EmploymentAgreementAlt] ).agg(f)\n", "\n", "display(temp)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Terms of Contracts: Length\n", "Below we describe statistics for the length of the consulting agreement measured in **days.** This is extracted from the descriptive notes " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru excluding LLCs with consulting agreements373293.99360.000232.5811.882
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru excluding LLCs with consulting agreements 3732 93.993 60.000 232.581 1.882 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
Passthru including LLCs with consulting agreements502687.36960.000207.9792.287
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "Passthru including LLCs with consulting agreements 5026 87.369 60.000 207.979 2.287 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanmedianstdsales wgt
All business with consulting agreements572793.28560.000227.5612.812
\n", "
" ], "text/plain": [ " count mean median std sales wgt\n", "All business with consulting agreements 5727 93.285 60.000 227.561 2.812 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EmploymentAgreementLengthwgt_sales
countmeanmedianstdsum
TargetStructureAlt
C Corporation701135.70360333.2100.526
LLC129468.26760107.3330.405
Partnership83113.84360290.5630.034
S Corporation312998.16860243.6781.757
Sole Proprietorship52065.69830129.1880.091
\n", "
" ], "text/plain": [ " EmploymentAgreementLength wgt_sales\n", " count mean median std sum\n", "TargetStructureAlt \n", "C Corporation 701 135.703 60 333.210 0.526 \n", "LLC 1294 68.267 60 107.333 0.405 \n", "Partnership 83 113.843 60 290.563 0.034 \n", "S Corporation 3129 98.168 60 243.678 1.757 \n", "Sole Proprietorship 520 65.698 30 129.188 0.091 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f = {'EmploymentAgreementLength':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'EmploymentAgreementLength':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )&data.EmploymentAgreementAlt\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "\n", "sel2=selection&sel&data.TargetStructurePassThru\n", "temp=data[sel2][['EmploymentAgreementLength','wgt_sales']].groupby(data[sel2].EmploymentAgreementAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru excluding LLCs with consulting agreements']\n", "\n", "temp=pd.concat([temp2])\n", "temp['count']=temp['count'].astype(int)\n", "\n", "display(temp)\n", "\n", "\n", "sel2=selection&sel&data.TargetStructurePassThruLLC\n", "temp=data[sel2][['EmploymentAgreementLength','wgt_sales']].groupby(data[sel2].EmploymentAgreementAlt).agg(f) \n", "\n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['Passthru including LLCs with consulting agreements']\n", "\n", "temp=pd.concat([temp2])\n", " \n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel&data.TargetStructureBus\n", "temp=data[sel2][['EmploymentAgreementLength','wgt_sales']].groupby(data[sel2].EmploymentAgreementAlt).agg(f) \n", "\n", "\n", "temp2=[]\n", "temp2=temp.iloc[0,:].values\n", "temp2=pd.DataFrame(temp2,index=['count','mean','median','std','sales wgt']).T\n", "temp2.index=['All business with consulting agreements']\n", "\n", "temp=pd.concat([temp2])\n", "temp['count']=temp['count'].astype(int)\n", " \n", "display(temp)\n", "\n", "sel2=selection&sel\n", "\n", "temp=data[sel2][['EmploymentAgreementLength','wgt_sales']].groupby([data[sel2].TargetStructureAlt] ).agg(f)\n", "\n", "display(temp)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Decomposition of Intangible Intensity by total assets\n", "### For all passthrus including LLCS" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntanglibleIntensityPPAwgt_sales_passthru
countmeanmedianstdsum
TotalAssetsPPA
(1000.0, 77500.0]177447.11246.65634.8290.692
(77500.0, 145000.0]181254.33257.92232.1381.163
(145000.0, 256130.6]173158.41563.17133.1191.769
(256130.6, 575000.0]177362.90569.19528.3003.021
(575000.0, 21824700000.0]177264.80372.08828.71093.355
\n", "
" ], "text/plain": [ " IntanglibleIntensityPPA wgt_sales_passthru\n", " count mean median std sum\n", "TotalAssetsPPA \n", "(1000.0, 77500.0] 1774 47.112 46.656 34.829 0.692 \n", "(77500.0, 145000.0] 1812 54.332 57.922 32.138 1.163 \n", "(145000.0, 256130.6] 1731 58.415 63.171 33.119 1.769 \n", "(256130.6, 575000.0] 1773 62.905 69.195 28.300 3.021 \n", "(575000.0, 21824700000.0] 1772 64.803 72.088 28.710 93.355 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "sel2=selection&sel&data.TargetStructurePassThruLLC\n", "\n", "data[sel2][['IntanglibleIntensityPPA','wgt_sales_passthru']].groupby(pd.cut( data[sel2]['TotalAssetsPPA'] , [ data[sel2]['TotalAssetsPPA'].quantile(x) for x in [0.0,0.2,0.4,0.6,0.8,1.0]] )).agg(f_pass)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### For all businesses \n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntanglibleIntensityPPAwgt_sales
countmeanmedianstdsum
TotalAssetsPPA
(1000.0, 85000.0]227547.60947.78334.7720.229
(85000.0, 160000.0]215854.92359.01531.9220.383
(160000.0, 300000.0]209259.87764.68032.0810.601
(300000.0, 850000.0]217361.83668.87629.0591.164
(850000.0, 153000000000.0]215564.23970.87729.55097.623
\n", "
" ], "text/plain": [ " IntanglibleIntensityPPA wgt_sales\n", " count mean median std sum\n", "TotalAssetsPPA \n", "(1000.0, 85000.0] 2275 47.609 47.783 34.772 0.229 \n", "(85000.0, 160000.0] 2158 54.923 59.015 31.922 0.383 \n", "(160000.0, 300000.0] 2092 59.877 64.680 32.081 0.601 \n", "(300000.0, 850000.0] 2173 61.836 68.876 29.059 1.164 \n", "(850000.0, 153000000000.0] 2155 64.239 70.877 29.550 97.623 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales':['sum']}\n", "f_pass = {'IntanglibleIntensityPPA':['count','mean','median','std'],'wgt_sales_passthru':['sum']}\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "sel2=selection&sel\n", "\n", "data[sel2][['IntanglibleIntensityPPA','wgt_sales']].groupby(pd.cut( data[sel2]['TotalAssetsPPA'] , [ data[sel2]['TotalAssetsPPA'].quantile(x) for x in [0.0,0.2,0.4,0.6,0.8,1.0]] )).agg(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regression of $\\log V_{\\kappa}$ on $age,age^2$\n", "The sample includes all pass-thru firms in Pratts who have a valid entry for \"TargetAge\" and a positive value for \"TotalIntangiblesPPA\". The regression specification is \n", "\n", "$$ \\log(\\text{TotalIntangiblesPPA}) = \\text{constant} + \\beta_{1} \\text{TagetAge} + \\beta_{2} \\text{TagetAge}^2 + \\text{sector fixed effects}+ \\text{year fixed effects} $$\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: TotalIntangiblesPPA R-squared: 0.236
Model: OLS Adj. R-squared: 0.232
Method: Least Squares F-statistic: 58.75
Date: Wed, 19 Aug 2020 Prob (F-statistic): 0.00
Time: 13:35:33 Log-Likelihood: -16865.
No. Observations: 8607 AIC: 3.382e+04
Df Residuals: 8561 BIC: 3.415e+04
Df Model: 45
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
const 11.2272 0.960 11.693 0.000 9.345 13.109
TargetAge 0.0169 0.002 8.518 0.000 0.013 0.021
TargetAge2 -4.637e-05 1.42e-05 -3.270 0.001 -7.42e-05 -1.86e-05
nacis_code_cat[11, 21) 0.2525 1.099 0.230 0.818 -1.902 2.407
nacis_code_cat[21, 22) 4.4811 1.087 4.123 0.000 2.351 6.612
nacis_code_cat[22, 23) -0.2470 1.191 -0.207 0.836 -2.583 2.089
nacis_code_cat[23, 24) 0.2224 1.001 0.222 0.824 -1.740 2.185
nacis_code_cat[24, 31) 2.674e-14 2.24e-14 1.192 0.233 -1.72e-14 7.07e-14
nacis_code_cat[31, 35) 0.6615 0.999 0.662 0.508 -1.298 2.620
nacis_code_cat[35, 42) -2.324e-15 9.11e-15 -0.255 0.799 -2.02e-14 1.55e-14
nacis_code_cat[42, 44) -0.9709 1.087 -0.893 0.372 -3.101 1.160
nacis_code_cat[44, 46) -0.7390 0.998 -0.740 0.459 -2.696 1.218
nacis_code_cat[46, 48) -3.898e-15 2.2e-14 -0.177 0.859 -4.7e-14 3.92e-14
nacis_code_cat[48, 50) -0.3017 1.002 -0.301 0.763 -2.265 1.662
nacis_code_cat[50, 51) -1.141e-15 2.37e-15 -0.482 0.630 -5.78e-15 3.5e-15
nacis_code_cat[51, 52) 2.3662 1.005 2.355 0.019 0.397 4.336
nacis_code_cat[52, 53) 0.7913 1.007 0.786 0.432 -1.182 2.765
nacis_code_cat[53, 54) -0.1870 1.003 -0.187 0.852 -2.152 1.778
nacis_code_cat[54, 55) 0.8193 1.001 0.819 0.413 -1.142 2.781
nacis_code_cat[55, 56) 6.4695 1.137 5.690 0.000 4.241 8.698
nacis_code_cat[56, 61) -0.5017 0.999 -0.502 0.615 -2.460 1.456
nacis_code_cat[61, 62) -0.9277 1.011 -0.918 0.359 -2.910 1.054
nacis_code_cat[62, 71) -0.1758 1.001 -0.176 0.861 -2.138 1.787
nacis_code_cat[71, 72) -0.8380 1.007 -0.833 0.405 -2.811 1.135
nacis_code_cat[72, 81) -1.2648 0.998 -1.267 0.205 -3.221 0.692
nacis_code_cat[81, 83) -1.3000 0.999 -1.302 0.193 -3.258 0.657
nacis_code_cat[83, 92) 2.13e-15 3.81e-15 0.560 0.576 -5.33e-15 9.59e-15
year1990 -3.83e-15 5.19e-15 -0.737 0.461 -1.4e-14 6.35e-15
year1991 1.658e-15 1.74e-15 0.952 0.341 -1.76e-15 5.07e-15
year1992 3.969e-16 6.46e-15 0.061 0.951 -1.23e-14 1.31e-14
year1993 -1.2132 1.173 -1.035 0.301 -3.512 1.085
year1994 -0.2682 0.630 -0.426 0.670 -1.503 0.966
year1995 -0.1314 0.466 -0.282 0.778 -1.044 0.781
year1996 0.0906 0.333 0.272 0.786 -0.562 0.744
year1997 0.1838 0.261 0.705 0.481 -0.327 0.695
year1998 0.4123 0.184 2.237 0.025 0.051 0.774
year1999 0.2481 0.169 1.466 0.143 -0.084 0.580
year2000 0.6193 0.172 3.609 0.000 0.283 0.956
year2001 0.0279 0.165 0.169 0.866 -0.295 0.351
year2002 0.3575 0.148 2.420 0.016 0.068 0.647
year2003 0.2876 0.149 1.924 0.054 -0.005 0.581
year2004 0.3198 0.136 2.360 0.018 0.054 0.585
year2005 0.8324 0.131 6.355 0.000 0.576 1.089
year2006 0.7937 0.120 6.637 0.000 0.559 1.028
year2007 0.9219 0.112 8.217 0.000 0.702 1.142
year2008 0.8160 0.106 7.723 0.000 0.609 1.023
year2009 0.5219 0.102 5.126 0.000 0.322 0.721
year2010 0.5082 0.098 5.175 0.000 0.316 0.701
year2011 0.6108 0.098 6.210 0.000 0.418 0.804
year2012 0.8147 0.097 8.383 0.000 0.624 1.005
year2013 0.8809 0.096 9.203 0.000 0.693 1.069
year2014 1.0353 0.093 11.126 0.000 0.853 1.218
year2015 1.0461 0.092 11.350 0.000 0.865 1.227
year2016 0.8004 0.092 8.740 0.000 0.621 0.980
year2017 0.7109 0.118 6.034 0.000 0.480 0.942
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 842.453 Durbin-Watson: 1.647
Prob(Omnibus): 0.000 Jarque-Bera (JB): 4493.515
Skew: 0.321 Prob(JB): 0.00
Kurtosis: 6.481 Cond. No. 1.03e+16


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 3.1e-22. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "===============================================================================\n", "Dep. Variable: TotalIntangiblesPPA R-squared: 0.236\n", "Model: OLS Adj. R-squared: 0.232\n", "Method: Least Squares F-statistic: 58.75\n", "Date: Wed, 19 Aug 2020 Prob (F-statistic): 0.00\n", "Time: 13:35:33 Log-Likelihood: -16865.\n", "No. Observations: 8607 AIC: 3.382e+04\n", "Df Residuals: 8561 BIC: 3.415e+04\n", "Df Model: 45 \n", "Covariance Type: nonrobust \n", "==========================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------------------\n", "const 11.2272 0.960 11.693 0.000 9.345 13.109\n", "TargetAge 0.0169 0.002 8.518 0.000 0.013 0.021\n", "TargetAge2 -4.637e-05 1.42e-05 -3.270 0.001 -7.42e-05 -1.86e-05\n", "nacis_code_cat[11, 21) 0.2525 1.099 0.230 0.818 -1.902 2.407\n", "nacis_code_cat[21, 22) 4.4811 1.087 4.123 0.000 2.351 6.612\n", "nacis_code_cat[22, 23) -0.2470 1.191 -0.207 0.836 -2.583 2.089\n", "nacis_code_cat[23, 24) 0.2224 1.001 0.222 0.824 -1.740 2.185\n", "nacis_code_cat[24, 31) 2.674e-14 2.24e-14 1.192 0.233 -1.72e-14 7.07e-14\n", "nacis_code_cat[31, 35) 0.6615 0.999 0.662 0.508 -1.298 2.620\n", "nacis_code_cat[35, 42) -2.324e-15 9.11e-15 -0.255 0.799 -2.02e-14 1.55e-14\n", "nacis_code_cat[42, 44) -0.9709 1.087 -0.893 0.372 -3.101 1.160\n", "nacis_code_cat[44, 46) -0.7390 0.998 -0.740 0.459 -2.696 1.218\n", "nacis_code_cat[46, 48) -3.898e-15 2.2e-14 -0.177 0.859 -4.7e-14 3.92e-14\n", "nacis_code_cat[48, 50) -0.3017 1.002 -0.301 0.763 -2.265 1.662\n", "nacis_code_cat[50, 51) -1.141e-15 2.37e-15 -0.482 0.630 -5.78e-15 3.5e-15\n", "nacis_code_cat[51, 52) 2.3662 1.005 2.355 0.019 0.397 4.336\n", "nacis_code_cat[52, 53) 0.7913 1.007 0.786 0.432 -1.182 2.765\n", "nacis_code_cat[53, 54) -0.1870 1.003 -0.187 0.852 -2.152 1.778\n", "nacis_code_cat[54, 55) 0.8193 1.001 0.819 0.413 -1.142 2.781\n", "nacis_code_cat[55, 56) 6.4695 1.137 5.690 0.000 4.241 8.698\n", "nacis_code_cat[56, 61) -0.5017 0.999 -0.502 0.615 -2.460 1.456\n", "nacis_code_cat[61, 62) -0.9277 1.011 -0.918 0.359 -2.910 1.054\n", "nacis_code_cat[62, 71) -0.1758 1.001 -0.176 0.861 -2.138 1.787\n", "nacis_code_cat[71, 72) -0.8380 1.007 -0.833 0.405 -2.811 1.135\n", "nacis_code_cat[72, 81) -1.2648 0.998 -1.267 0.205 -3.221 0.692\n", "nacis_code_cat[81, 83) -1.3000 0.999 -1.302 0.193 -3.258 0.657\n", "nacis_code_cat[83, 92) 2.13e-15 3.81e-15 0.560 0.576 -5.33e-15 9.59e-15\n", "year1990 -3.83e-15 5.19e-15 -0.737 0.461 -1.4e-14 6.35e-15\n", "year1991 1.658e-15 1.74e-15 0.952 0.341 -1.76e-15 5.07e-15\n", "year1992 3.969e-16 6.46e-15 0.061 0.951 -1.23e-14 1.31e-14\n", "year1993 -1.2132 1.173 -1.035 0.301 -3.512 1.085\n", "year1994 -0.2682 0.630 -0.426 0.670 -1.503 0.966\n", "year1995 -0.1314 0.466 -0.282 0.778 -1.044 0.781\n", "year1996 0.0906 0.333 0.272 0.786 -0.562 0.744\n", "year1997 0.1838 0.261 0.705 0.481 -0.327 0.695\n", "year1998 0.4123 0.184 2.237 0.025 0.051 0.774\n", "year1999 0.2481 0.169 1.466 0.143 -0.084 0.580\n", "year2000 0.6193 0.172 3.609 0.000 0.283 0.956\n", "year2001 0.0279 0.165 0.169 0.866 -0.295 0.351\n", "year2002 0.3575 0.148 2.420 0.016 0.068 0.647\n", "year2003 0.2876 0.149 1.924 0.054 -0.005 0.581\n", "year2004 0.3198 0.136 2.360 0.018 0.054 0.585\n", "year2005 0.8324 0.131 6.355 0.000 0.576 1.089\n", "year2006 0.7937 0.120 6.637 0.000 0.559 1.028\n", "year2007 0.9219 0.112 8.217 0.000 0.702 1.142\n", "year2008 0.8160 0.106 7.723 0.000 0.609 1.023\n", "year2009 0.5219 0.102 5.126 0.000 0.322 0.721\n", "year2010 0.5082 0.098 5.175 0.000 0.316 0.701\n", "year2011 0.6108 0.098 6.210 0.000 0.418 0.804\n", "year2012 0.8147 0.097 8.383 0.000 0.624 1.005\n", "year2013 0.8809 0.096 9.203 0.000 0.693 1.069\n", "year2014 1.0353 0.093 11.126 0.000 0.853 1.218\n", "year2015 1.0461 0.092 11.350 0.000 0.865 1.227\n", "year2016 0.8004 0.092 8.740 0.000 0.621 0.980\n", "year2017 0.7109 0.118 6.034 0.000 0.480 0.942\n", "==============================================================================\n", "Omnibus: 842.453 Durbin-Watson: 1.647\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 4493.515\n", "Skew: 0.321 Prob(JB): 0.00\n", "Kurtosis: 6.481 Cond. No. 1.03e+16\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The smallest eigenvalue is 3.1e-22. This might indicate that there are\n", "strong multicollinearity problems or that the design matrix is singular.\n", "\"\"\"" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummies1 = pd.get_dummies(data['naics_code_cat']).rename(columns=lambda x: 'nacis_code_cat' + str(x))\n", "dummies2 = pd.get_dummies(data['year']).rename(columns=lambda x: 'year' + str(x))\n", "X = pd.concat([data[['TargetAge','TargetAge2']],dummies1,dummies2],axis=1)\n", "Y=np.log(data.TotalIntangiblesPPA)\n", "X = sm.add_constant(X)\n", "selection=(pd.notnull(data.TargetAge)) &(pd.notnull(data.TotalIntangiblesPPA) ) & (data.TotalIntangiblesPPA>0)& ~(data.TargetStructureAlt=='C Corporation')\n", "model11 = sm.OLS(Y[selection], X[selection]).fit()\n", "model11.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Intangible valuations multiple of Net Income\n", "We divide the PPA allocated to Intangible assets by Net Income in the previous year and then group by legal form and report the median. " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntangibleToNetIncome
TargetStructureAlt
LLC1.268
Partnership1.522
S Corporation1.596
Sole Proprietorship1.228
\n", "
" ], "text/plain": [ " IntangibleToNetIncome\n", "TargetStructureAlt \n", "LLC 1.268 \n", "Partnership 1.522 \n", "S Corporation 1.596 \n", "Sole Proprietorship 1.228 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "selPassThru=data['TargetStructureAlt'].isin(['S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "data['IntangibleToNetIncome']=data['TotalIntangiblesPPA']/data['NetIncome']\n", "temp=data[selPassThru][['IntangibleToNetIncome']].groupby(data[selPassThru].TargetStructureAlt).median()\n", "display(temp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More details for Real Estate\n", "\n", "We show below that most of the transactions in \"real estate\" sector in Pratts have little or no long-term liabilities" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TotalAssetsPPATotalLiabilitiesPPADebtAssumed
TargetStructureAltyear
Partnership1999150000.0000.0000.000
200955000.0000.0000.000
2010275000.0000.0000.000
20131047400.0000.0000.000
S Corporation1996325000.0000.0000.000
1998109400.0000.0000.000
199975000.0000.0000.000
20011330000.0000.0000.000
2003750000.0000.0000.000
2004299000.0000.0000.000
2005125000.0000.0000.000
200618108580.0001817000.0000.000
200732440000.0006710000.0003426000.000
20083325000.0000.0000.000
20092317000.0000.0000.000
20103263000.0000.0000.000
20114579287.0000.0000.000
20124735000.0000.0000.000
201311658749.0000.0000.000
20149452500.0000.0000.000
20152693511.0000.0000.000
20167507992.0000.0000.000
20173381000.0000.0000.000
Sole Proprietorship1997365000.0000.0000.000
2000240500.0000.0000.000
2001360000.0000.0000.000
2007550000.0000.0000.000
2008200000.0000.0000.000
2009105000.0000.0000.000
2010100000.0000.0000.000
2011300000.0000.0000.000
201290000.0000.0000.000
2013145000.0000.0000.000
20141750000.0000.0000.000
2015250000.0000.0000.000
2016445000.0000.0000.000
\n", "
" ], "text/plain": [ " TotalAssetsPPA TotalLiabilitiesPPA DebtAssumed\n", "TargetStructureAlt year \n", "Partnership 1999 150000.000 0.000 0.000 \n", " 2009 55000.000 0.000 0.000 \n", " 2010 275000.000 0.000 0.000 \n", " 2013 1047400.000 0.000 0.000 \n", "S Corporation 1996 325000.000 0.000 0.000 \n", " 1998 109400.000 0.000 0.000 \n", " 1999 75000.000 0.000 0.000 \n", " 2001 1330000.000 0.000 0.000 \n", " 2003 750000.000 0.000 0.000 \n", " 2004 299000.000 0.000 0.000 \n", " 2005 125000.000 0.000 0.000 \n", " 2006 18108580.000 1817000.000 0.000 \n", " 2007 32440000.000 6710000.000 3426000.000 \n", " 2008 3325000.000 0.000 0.000 \n", " 2009 2317000.000 0.000 0.000 \n", " 2010 3263000.000 0.000 0.000 \n", " 2011 4579287.000 0.000 0.000 \n", " 2012 4735000.000 0.000 0.000 \n", " 2013 11658749.000 0.000 0.000 \n", " 2014 9452500.000 0.000 0.000 \n", " 2015 2693511.000 0.000 0.000 \n", " 2016 7507992.000 0.000 0.000 \n", " 2017 3381000.000 0.000 0.000 \n", "Sole Proprietorship 1997 365000.000 0.000 0.000 \n", " 2000 240500.000 0.000 0.000 \n", " 2001 360000.000 0.000 0.000 \n", " 2007 550000.000 0.000 0.000 \n", " 2008 200000.000 0.000 0.000 \n", " 2009 105000.000 0.000 0.000 \n", " 2010 100000.000 0.000 0.000 \n", " 2011 300000.000 0.000 0.000 \n", " 2012 90000.000 0.000 0.000 \n", " 2013 145000.000 0.000 0.000 \n", " 2014 1750000.000 0.000 0.000 \n", " 2015 250000.000 0.000 0.000 \n", " 2016 445000.000 0.000 0.000 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TotalLiabilityIntensityPPADebtAssumedIntensity
count94.000148.000
mean0.0040.001
std0.0260.009
min0.0000.000
25%0.0000.000
50%0.0000.000
75%0.0000.000
max0.2260.115
\n", "
" ], "text/plain": [ " TotalLiabilityIntensityPPA DebtAssumedIntensity\n", "count 94.000 148.000 \n", "mean 0.004 0.001 \n", "std 0.026 0.009 \n", "min 0.000 0.000 \n", "25% 0.000 0.000 \n", "50% 0.000 0.000 \n", "75% 0.000 0.000 \n", "max 0.226 0.115 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "sel=selection&sel&data.TargetStructurePassThru &(data.naics_label=='Real Estate and Rental and Leasing')\n", "data[sel][['TotalAssetsPPA','TotalLiabilitiesPPA','DebtAssumed']].groupby([data.TargetStructureAlt,data.year]).sum()\n", "pd.set_option('display.max_rows', None)\n", "data['TotalLiabilityIntensityPPA']=data['TotalLiabilitiesPPA']/data['TotalAssetsPPA']\n", "data['DebtAssumedIntensity']=data['DebtAssumed']/data['TotalAssetsPPA']\n", "data[sel][['TotalLiabilityIntensityPPA','DebtAssumedIntensity']].describe()\n", "#data[sel][['TotalLiabilityIntensityPPA','IntanglibleIntensityPPA','DebtAssumed','TotalAssetsPPA','TotalLiabilitiesPPA','TargetBusinessDescription','TargetStructureAlt']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More Details on Transport and Warehousing" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "sel=selection&sel&data.TargetStructurePassThruLLC &(data.naics_label=='Transportation and Warehousing')\n", "columnsPPA = [s for s in data.columns if \"PPA\" in s]\n", "pd.set_option('display.max_columns', None)\n", "#data[sel][columnsPPA].groupby([data.TargetStructureAlt]).describe().T" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntanglibleIntensityPPA
countmeanstdmin25%50%75%max
IsRoute
False233.00060.24126.3510.00042.85763.70680.935100.000
True94.00081.08314.71719.23176.26182.50090.567100.000
\n", "
" ], "text/plain": [ " IntanglibleIntensityPPA \n", " count mean std min 25% 50% 75% max\n", "IsRoute \n", "False 233.000 60.241 26.351 0.000 42.857 63.706 80.935 100.000\n", "True 94.000 81.083 14.717 19.231 76.261 82.500 90.567 100.000" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['IsRoute']=False\n", "sel2=data['TargetBusinessDescription'].str.contains(\"route\", na=False, case=False)\n", "data.loc[sel2,'IsRoute']=True\n", "data[sel][['IntanglibleIntensityPPA']].groupby(data[sel].IsRoute).describe()\n", "#data['IsLimo']=False\n", "#sel2=data['TargetBusinessDescription'].str.contains(\"limo\", na=False, case=False)\n", "#data.loc[sel2,'IsLimo']=True\n", "#data[sel][['IntanglibleIntensityPPA']].groupby(data[sel].IsLimo).describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Retirement Analysis" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IntanglibleIntensityPPA
countmeanstdmin25%50%75%max
ReasonForSale
Not Provided9831.00057.33232.287-51.82932.83562.96384.671631.818
Others20.00052.07627.2405.68231.66757.15779.89586.792
health238.00062.10731.5520.00039.60271.20288.056101.651
other interests/opportunities465.00060.80931.504-51.38638.00067.78186.304259.291
relocation146.00063.26826.1334.28642.52767.29685.631100.000
retirement154.00052.15528.7910.00028.24255.41273.187100.000
\n", "
" ], "text/plain": [ " IntanglibleIntensityPPA \n", " count mean std min 25% 50% 75% max\n", "ReasonForSale \n", "Not Provided 9831.000 57.332 32.287 -51.829 32.835 62.963 84.671 631.818\n", "Others 20.000 52.076 27.240 5.682 31.667 57.157 79.895 86.792 \n", "health 238.000 62.107 31.552 0.000 39.602 71.202 88.056 101.651\n", "other interests/opportunities 465.000 60.809 31.504 -51.386 38.000 67.781 86.304 259.291\n", "relocation 146.000 63.268 26.133 4.286 42.527 67.296 85.631 100.000\n", "retirement 154.000 52.155 28.791 0.000 28.242 55.412 73.187 100.000" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
wgt_sales
ReasonForSale
Not Provided53.787
Others0.005
health13.051
other interests/opportunities29.199
relocation0.117
retirement3.841
\n", "
" ], "text/plain": [ " wgt_sales\n", "ReasonForSale \n", "Not Provided 53.787 \n", "Others 0.005 \n", "health 13.051 \n", "other interests/opportunities 29.199 \n", "relocation 0.117 \n", "retirement 3.841 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['Notes']=data['Notes'].str.lower()\n", "data['ReasonForSale']='Not Provided'\n", "\n", "sel2=data['Notes'].str.contains(\"reason \", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='Others'\n", "\n", "selection=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "sel=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "sel=selection&sel\n", "\n", "sel2=data['Notes'].str.contains(\"retir\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='retirement'\n", "\n", "sel2=(data['Notes'].str.contains(\"relocat\", na=False, case=False)|data['Notes'].str.contains(\"moving\", na=False, case=False))\n", "data.loc[sel2,'ReasonForSale']='relocation'\n", "\n", "sel2=data['Notes'].str.contains(\"out-of -state\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='relocation'\n", "\n", "sel2=data['Notes'].str.contains(\"out of state\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='relocation'\n", "\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"health\", na=False, case=False)| data['Notes'].str.contains(\"illness\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='health'\n", "\n", "#sel2=data['Notes'].str.contains(\"burnout\", na=False, case=False)|data['Notes'].str.contains(\"bur nout\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='burnout'\n", "\n", "sel2=(data['Notes'].str.contains(\"interest\", na=False, case=False))&data['Notes'].str.contains(\"other\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "\n", "sel2=(data['Notes'].str.contains(\"opportunit\", na=False, case=False) )&data['Notes'].str.contains(\"other\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "\n", "sel2=(data['Notes'].str.contains(\"opportunit\", na=False, case=False) )&data['Notes'].str.contains(\"new\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "\n", "#sel2=data['Notes'].str.contains(\"divorce\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='divorce'\n", "#sel2=data['Notes'].str.contains(\"family\", na=False, case=False)& data['Notes'].str.contains(\"reason\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='family'\n", "\n", "\n", "#sel2=data['Notes'].str.contains(\"dissolution\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='partnership dissolution'\n", "\n", "\n", "#sel2=data['Notes'].str.contains(\"partnership breakup\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='partnership dissolution'\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"death\", na=False, case=False)| data['Notes'].str.contains(\"passed away\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='health'\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"died\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='health'\n", "\n", "sel2=data['Notes'].str.contains(\"deceased\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='health'\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"career\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"a change\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "\n", "#sel2=data['Notes'].str.contains(\"school\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='going back to school'\n", "\n", "\n", "\n", "#sel2=data['Notes'].str.contains(\"downsizing\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='downsizing'\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"other business investments\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "sel2=data['Notes'].str.contains(\"new\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='other interests/opportunities'\n", "\n", "\n", "sel2=data['Notes'].str.contains(\"ill\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "data.loc[sel2,'ReasonForSale']='health'\n", "\n", "#sel2=data['Notes'].str.contains(\"personal time\", na=False, case=False) & data['Notes'].str.contains(\"reason for\", na=False, case=False)\n", "#data.loc[sel2,'ReasonForSale']='more personal time'\n", "\n", "\n", "\n", "data[sel][['IntanglibleIntensityPPA']].groupby([data[sel].ReasonForSale]).describe()\n", "\n", "data[sel][['wgt_sales']].groupby([data[sel].ReasonForSale]).sum()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other Category" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 20.000\n", "mean 52.076\n", "std 27.240\n", "min 5.682 \n", "25% 31.667\n", "50% 57.157\n", "75% 79.895\n", "max 86.792\n", "Name: IntanglibleIntensityPPA, dtype: float64" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#sel1\n", "sel1=(data.IntanglibleIntensityPPA.notnull())&~(np.isinf(data.IntanglibleIntensityPPA) )\n", "sel3=data['TargetStructureAlt'].isin(['C Corporation','S Corporation', 'Sole Proprietorship', 'Partnership','LLC'])\n", "sel2=data['ReasonForSale']=='Others'\n", "data[sel1&sel2&sel3]['IntanglibleIntensityPPA'].describe()\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2153 net income includes other income of 1399. the reason for selling was burnout. \n", "6360 ebt includes other income of 4739. the reason for selling was to go into prototype work. \n", "12969 reason for selling was divorce \n", "13011 reason for sale: leaving business. \n", "13032 ebt: includes other income of 31. reason for sale: concentrate on second location. \n", "13064 reason for sale: partnership dissolution. payroll averages over 15/hr. for the 96 hrs/wk. they are open. by lowering cost seller feels business could do better.\n", "13200 reason for sale: one partner has moved out of area. bldg. 1800 ft.2. \n", "13211 reason for sale: tired of pizza business. \n", "13268 net income includes rental income of 9756 a vendor fee of 9 and a tax penalty of 3869. the reason for selling was to start a family. \n", "13665 reason for sale was to concentrate on other business. \n", "13778 ebt includes other income of 30841. the reason for selling was a non-pharmacist son inherited the business. \n", "14202 ebt includes vendor fee income of 1064. the reason for sale was burnout. \n", "16862 the reason for selling was a partnership dissolution. \n", "17086 reason for sale: concentrate on developing retail outlets. \n", "17756 the reason for sale was divorce. \n", "17770 reason for sale: spend more time with family. \n", "21971 the reason for selling was consolidation of businesses. \n", "23121 the reason for selling was divorce. \n", "23122 the reason for selling was divorce. \n", "24765 reason for sale was a conflict of interest. \n", "Name: Notes, dtype: object" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[sel1&sel2&sel3]['Notes']\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }