Q:

How do I use two colours in a bounding box?

I had what I thought was a simple task, which is to create two different coloured background rectangles. The purpose is to distinguish one set of concepts from another.
I haven't found an answer that seems to apply to my situation. This question was about colouring boxes which I thought was relevant, but I can't make the solution work. The solution to this question used calc but I don't know how to specify the second colour, as I don't want white.
I had initially tried to use two separate rectangles, but they don't align vertically. The code for that attempt is:
\begin{tikzpicture}[every node/.style=draw, arrow/.style={thick, -stealth}]
\node[ellipse, text width=3.2cm] (PS) {Finding out about a problem};
\node[ellipse, below=3.5cm of PS] (RD) {Root definitions};
\node[ellipse, right=1cm of RD] (CM) {Conceptual models};
\node[ellipse, above=1.5cm of CM] (RWE) {Real world events};
\node[ellipse, above=1.55cm of RWE] (TA) {Taking action};
\node[draw=none,text width=3cm, above right=of RWE, xshift=.4cm, yshift=-.8cm] (box1) {Real-world events occurring over time};
\node[draw=none, text width= 3cm, above right = of CM, xshift=.4cm, yshift=-1.8cm] (box2) {Systems thinking on the real world};

\draw[arrow] (PS.south) -- (RD.north);
\draw[arrow] (RD.east) -- (CM.west);
\draw[arrow] (CM.north) -- (RWE.south);
\draw[arrow] (RWE.north) -- (TA.south);
\draw[arrow] (TA.west) -- (PS.east);

\begin{scope}[on background layer]
\node[fill=yellow!20, inner sep=10pt, rectangle, fit=(PS) (TA) (RWE) (box1)]{};
\node[fill=green!20, inner sep=10pt, rectangle, fit= (RD) (CM) (box2)]{};
\end{scope}
\end{tikzpicture}

I then tried the background method. This still doesn't correctly align the coloured rectangles. The code for the updated attempt is:
\begin{tikzpicture}[every node/.style=draw, arrow/.style={thick, -stealth}]
\node[ellipse, text width=3.2cm] (PS) {Finding out about a problem};
\node[ellipse, below=3.5cm of PS] (RD) {Root definitions};
\node[ellipse, right=1cm of RD] (CM) {Conceptual models};
\node[ellipse, above=1.5cm of CM] (RWE) {Real world events};
\node[ellipse, above=1.55cm of RWE] (TA) {Taking action};
\node[draw=none,text width=3cm, above right=of RWE, xshift=.4cm, yshift=-.8cm] (box1) {Real-world events occurring over time};
\node[draw=none, text width= 3cm, above right = of CM, xshift=.4cm, yshift=-1.8cm] (box2) {Systems thinking on the real world};

\draw[arrow] (PS.south) -- (RD.north);
\draw[arrow] (RD.east) -- (CM.west);
\draw[arrow] (CM.north) -- (RWE.south);
\draw[arrow] (RWE.north) -- (TA.south);
\draw[arrow] (TA.west) -- (PS.east);

\begin{pgfonlayer}{background}
\node[fill=yellow!20, draw=none, fit =(PS) (TA) (RWE) (box1) (current bounding box.north east)] {};
    \node[fill=green!20, draw=none, fit =(RD) (CM) (box2) (current bounding box.south east)] {};
\end{pgfonlayer}
\end{tikzpicture}

But if I replace the two lines for the green and yellow bands with a single background colour using the bounding box, the vertical borders are the same:
\begin{pgfonlayer}{background}
\node[fill=blue!30, fit= (current bounding box.north west) (current bounding box.south east)] {};   
\end{pgfonlayer}

Which gives me:

Is there some way of using the calc option to split the bounding box at a predefined vertical distance, and use the two colours?

A:

There are many ways to do the split, here is one.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{backgrounds,positioning,shapes.geometric}
\begin{document}
\begin{tikzpicture}[every node/.style=draw, arrow/.style={thick, -stealth}]
\node[ellipse, text width=3.2cm] (PS) {Finding out about a problem};
\node[ellipse, below=3.5cm of PS] (RD) {Root definitions};
\node[ellipse, right=1cm of RD] (CM) {Conceptual models};
\node[ellipse, above=1.5cm of CM] (RWE) {Real world events};
\node[ellipse, above=1.55cm of RWE] (TA) {Taking action};
\node[draw=none,text width=3cm, above right=of RWE, xshift=.4cm, yshift=-.8cm] (box1) {Real-world events occurring over time};
\node[draw=none, text width= 3cm, above right = of CM, xshift=.4cm, yshift=-1.8cm] (box2) {Systems thinking on the real world};

\draw[arrow] (PS.south) -- (RD.north);
\draw[arrow] (RD.east) -- (CM.west);
\draw[arrow] (CM.north) -- (RWE.south);
\draw[arrow] (RWE.north) -- (TA.south);
\draw[arrow] (TA.west) -- (PS.east);
\path (CM) -- (RWE) coordinate[pos=0.5] (aux)
([xshift=1ex,yshift=1ex]current bounding box.north east) coordinate (BBNE) 
([xshift=-1ex,yshift=-1ex]current bounding box.south west) coordinate (BBSW);; 
\begin{pgfonlayer}{background}
 \fill[yellow!20] (BBNE)  rectangle (BBSW|-aux);
 \fill[green!20] (BBSW)  rectangle (BBNE|-aux);
\end{pgfonlayer}
\end{tikzpicture}
\end{document}

A:

This version uses the [fit=...] option.  Note that each node adds [inner sep], which is useful for adding a border, but changes the current bounding box and overlaps the midpoint.
\documentclass[tikz]{standalone}
\usetikzlibrary{backgrounds,positioning,shapes.geometric,fit,calc}
\begin{document}
\begin{tikzpicture}
\begin{scope}[every node/.style=draw, arrow/.style={thick, -stealth},local bounding box=fred]
\node[ellipse, text width=3.2cm] (PS) {Finding out about a problem};
\node[ellipse, below=3.5cm of PS] (RD) {Root definitions};
\node[ellipse, right=1cm of RD] (CM) {Conceptual models};
\node[ellipse, above=1.5cm of CM] (RWE) {Real world events};
\node[ellipse, above=1.55cm of RWE] (TA) {Taking action};
\node[draw=none,text width=3cm, above right=of RWE, xshift=.4cm, yshift=-.8cm] (box1) {Real-world events occurring over time};
\node[draw=none, text width= 3cm, above right = of CM, xshift=.4cm, yshift=-1.8cm] (box2) {Systems thinking on the real world};

\draw[arrow] (PS.south) -- (RD.north);
\draw[arrow] (RD.east) -- (CM.west);
\draw[arrow] (CM.north) -- (RWE.south) coordinate[midway](divide);
\draw[arrow] (RWE.north) -- (TA.south);
\draw[arrow] (TA.west) -- (PS.east);
\end{scope}

\path (divide) +(0pt,0.333em) coordinate(dtop) +(0pt,-0.333em) coordinate(dbottom);

\begin{pgfonlayer}{background}
\node[fill=blue, draw=none, fit =(dtop) (fred.north west) (fred.north east)] {};
    \node[fill=green!20, draw=none, fit =(dbottom) (fred.south west) (fred.south east)] {};
\end{pgfonlayer}
\end{tikzpicture}
\end{document}

A:

An another way to have two color background:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{backgrounds,
                calc,
                fit,
                positioning,
                shapes.geometric}
\begin{document}
    \begin{tikzpicture}[
    node distance = 9mm and 12mm,
       ell/.style = {ellipse, draw, align=center, 
                     inner xsep=-3pt, outer sep=0pt},
  FIT/.style args = {#1/#2}{draw, fill = #1, fit = #2,
                     inner sep=0pt, outer sep=0pt,
                     node contents={}},
every edge/.style = {draw, thick, -stealth},
                    ]
\node[ell] (CM)                 {Conceptual models};
\node[ell, above=of CM] (RWE)   {Real world events};
\node[ell, above=of RWE] (TA)   {Taking action};
\node[ell, left=of TA] (PS)     {Finding out\\ about a problem};
\node[ell, at={(PS |- CM)}] (RD){Root definitions};
%
\node[right=of $(RWE.east)!0.5!(RWE.east |- TA)$,text width=9em] (box1) 
                                {Real-world events occurring over time};
\node[right=of $(RWE.east |- CM)$,text width=9em] (box2)
                                {Systems thinking on the real world};
%
\draw   (PS)    edge (RD)
        (RD)    edge (CM)
        (CM)    edge (RWE)
        (RWE)   edge (TA)
        (TA)    edge (PS);
%
    \begin{pgfonlayer}{background}
\node[fit=(PS) (CM) (box1)] (f) {};
\node[FIT=yellow!20/(f.north west) (f.north east) ($(RWE)!0.5!(CM)$)];
\node[FIT= green!20/(f.south west) (f.south east) ($(RWE)!0.5!(CM)$)];
    \end{pgfonlayer}
    \end{tikzpicture}
\end{document}

