BEFORE DISCUSSING AGILE ESTIMATION, it's important to have an understanding of what's different about the environment for an agile project, because there are some very significant differences that affect how you would do any kind of estimation.
A traditional plan-driven or waterfall project is usually based on somewhat of a contractual relationship between the business users and the project team. Typically, the business users agree to some fairly well-defined requirements and sign off on them prior to the start of the project. The project team then commits to a cost and delivery schedule to meet those requirements and any changes in the scope of the requirements are controlled from that point forward. In order to manage the reliability of the estimates, some kind of disciplined process for managing changes to the requirements is implemented, and significant changes are considered to be an exception rather than the norm. If a significant change does takes place, it normally triggers an assessment to determine the impact on the costs and schedule of the project and any initial estimates are recalculated and revised if necessary.
An agile project has a very different model: