There have been a lot of complaints that Google Analytics does not always track Google AdSense data accurately, and there is a reason for the errors.
In order for Google Analytics to track Google AdSense data properly the code for your Google Ad Manager, AdSense Analytics Code (ASAC), Google AdSense ads, and Google Analytics code, must be placed into your web site template files in the proper order.
If you use Google Ad Manager then that code will be pasted into the your template files of your website first in between the HTML tags as shown in the example below.

Next you will past the AdSense Analytics Code (ASAC) right after the tag. This is not required for the primary domain name, or web site, it is only required for additional domain names or web sites being tracked by Google Analytics.

After the AdSense Analytics Code (ASAC) you will the paste your Google AdSense ad code. The example below uses the Google Ad Manager ad code. This code will be pasted after the AdSense Analytics Code (ASAC), which means it will also come after the tag, but before the tag. So the code below must be pasted between the tags.

Last on the list is to paste the Google Analytics code. This code needs to be pasted just before the tag as shown in the example below. Make certain you are using the new ga.js tracking code, and not the legacy urchin.js tracking code, otherwise your tracking statistics will be limited. Eventually the urchin.js tracking code will be retired.

If all of your code is placed into your web site templates in the correct order the statistical data collected should be accurate.