\documentclass[tikz, border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{bayesnet}
\begin{document}
\tikzstyle{emptynode} = [rectangle, draw=black!0, minimum size=3mm]
\tikzstyle{rect} = [rectangle, draw=black!90, minimum size=3mm]
\tikzstyle{diam} = [diamond, draw=black!90, minimum width=1.5mm, minimum height = 1.5mm]
\begin{tikzpicture}
\node[emptynode] (s0) {};
\node[latent, right= 2cm of s0](s1){$s$};
\node[emptynode, right= 2cm of s1](s2){};
\node[emptynode, below= 2cm of s0](x0){};
\node[emptynode, below= 2cm of s1](x1){};
\node[emptynode, below= 2cm of s2](x2){};
\node[obs, below= 3cm of s0](b0){$b_0$};
\node[obs, below= 2.8cm of s1](b1){$b_1$};
\node[obs, below= 3cm of s2](b2){$b_2$};
\node[rect, fill = black!20 ,right = 0.8cm of x0](a0){$a_0$};
\node[rect, fill = black!20, right = 0.8cm of x1](a1){$a_1$};
\node[obs, above = 0.6 of a0](r0){$r_0$};
\node[obs, above = 0.6 of a1](r1){$r_1$};
\node[emptynode, right= 2cm of s2](e1){$\cdots$};
\node[emptynode, right= 2cm of b2](e2){$\cdots$};
\edge{s1}{r0,r1}
\edge{b0}{b1,a0};
\edge{b1}{b2};
\edge{a0}{r0};
\edge{b1}{b2, a1};
\edge{r1,a1}{b2};
\edge{a1}{r1};
\edge{a0,r0}{b1};
\edge{b2}{e2};
\node[draw=black,thin,fit=(s0)(s1)(s2), rectangle,inner sep=10pt](rect1) {};
\node[draw=black,thin,fit=(b0)(b1)(b2), rectangle,inner sep=10pt](rect1) {};
\end{tikzpicture}
\end{document}