We investigate the causes of temperature change over the last four decades, both near the surface and in the free atmosphere, using a coupled atmosphere/ocean general circulation model, HadCM3, which requires no flux correction. We use an 'optimal detection' methodology to examine zonal mean temperatures near the surface and on nine diagnosed pressure levels throughout the atmosphere over the last four decades of the 20th Century. This produces a space-time-multivariable detection analysis which for the first time includes both solar and volcanic forcings in addition to anthropogenic forcings. Our results strengthen the case for an anthropogenic influence on climate. Unlike previous studies we attribute observed decadal-mean temperature changes both to anthropogenic emissions, and changes in stratospheric volcanic aerosols. The temperature response to change in solar irradiance is also detected but with a lower confidence than the other forcings.