Usually air leakage rather than missing insulation. Older houses leak at the attic top plates, rim joist, and penetrations, and that moving air carries far more heat than the same area of under-insulated wall.
More detail
The instinct is to blame the furnace or the windows. In Greater Columbus and Central Ohio housing the larger number is almost always the building envelope, and within the envelope it is air movement rather than R-value. Here is the mechanism. Warm air rises, escapes through gaps at the top of the house, and pulls replacement air in through gaps at the bottom. That stack effect runs continuously all winter. Every cubic foot of heated air that leaves has to be replaced by outside air the furnace then heats from scratch. Insulation slows conductive heat loss through a surface; it does nothing about air moving through a hole next to it. Where the holes are, in rough order of impact. The attic plane, especially at top plates, around recessed lights, at the chimney chase, and at the attic hatch. The rim joist, the band of framing where the floor structure sits on the foundation, which is often bare in anything built before the mid-1990s. Penetrations for plumbing, wiring, and ductwork. Basement and crawl space perimeter. Why this matters for what you spend. Replacing windows is the most expensive envelope work per unit of heat saved and the most visible, which is why it gets sold. Air sealing the attic plane and the rim joist is among the cheapest and is invisible when finished. The honest first step is measurement rather than product. A blower door test puts a number on the leakage and an infrared scan shows where it is, which turns a guess into a work list. In Climate Zone 5A the code attic target is R-49 to R-60 depending on the code cycle adopted locally, and plenty of the mix of pre-war stock in the older Columbus neighborhoods, mid-century ranches in the inner suburbs, and large 1990s-onward subdivisions in the outer counties sits at half of that with an unsealed plane underneath it.