The cause of missing edges is the fact that these edges are shared by more than two faces. In a technical term they are non-manifold edges. Freestyle tends to leave this kind of feature edges undetected.
Specifically, the model contains edges shared by three faces at the edge loops connecting the column and planes. Remove the faces at both ends of the column (and make a hole in each plane), and you will have all edges properly drawn.
Now let us have a closer look at what is going on. The missing edges are crease lines from the Freestyle perspective. Crease lines are those edges between two adjacent faces making an angle smaller than a threshold (referred to as the Crease Angle). When an edge is shared by two faces, there is no problem and Freestyle can check the angle between the two faces to see if the edge is a crease line. However, if the same edge is shared by three faces, the situation is more difficult and Freestyle has to decide which two faces to use for crease line detection. Indeed what Freestyle can do at best is to randomly pick up two of the three faces to check if the edge is a crease line. That is why edges are missing at random.
In summary, it is recommended to model objects without having edges shared by three or more faces.