Why doesnt the multiplication of the total income per person (INCTOT) by PERWT give the total GDP?

I am running this code in SAS and am adjusting the 9999999 and making them missing values.

DATA USA_6_2015;

set IPUMS.usa_00006;

where YEAR=2015;

if INCTOT=9999999 then INCTOT=.;

TOTS=INCTOT*PERWT;

run;

PROC MEANS DATA=USA_6_2015 NONOBS MAXDEC=2 SUM MEAN STD min max ;

VAR HHWT INCTOT TOTS PERWT ;

RUN;

I receive a sum of the TOTS variabels of 9.0584798E12 when the true GDP is somewhere around 1.8e13

There are a few reasons why multiplying INCTOT by PERWT using ACS or Census data will not replicate the national GDP figure.

The main issue is that the calculation of GDP via the income approach incorporates other measures beyond total personal income. The income approach also includes the profits of incorporated businesses and corporate profits (this in addition to the sum of wages, salaries, social security, health/pension plans, rent, and interest will give you national income). Beyond that, to get GDP you would also need indirect business taxes, depreciation, and net foreign factor income.

Additionally, INCTOT is the sum of other variables that have been already been top-coded. For example, you can see how INCWAGE has been top-coded here. As such, public use microdata will not allow you to fully capture the true value of total income.