Your regular expression accepts the word $xxxy$, which contains too many $x$s.
We can break down words in your language into three different kinds:
- No $x$s, and so at least three many $y$s.
- One $x$. In that case, the word is of the form $y^ixy^j$, with $i+j \geq 2$. This means that either $i = 0$ and $j \geq 2$, or $i = 1$ and $j \geq 1$, or $i \geq 2$.
0 Two $x$s. In that case, the word is of the form $y^ixy^jxy^k$, with $i+j+k \geq 1$. This means that either $i=j=0$ and $k \geq 1$, or $i=0$ and $j \geq 1$, or $i \geq 1$.
Putting everything together, we reach
$$
yyy^+ + xyy^+ + yxy^+ + yy^+xy^* + xxy^+ + xy^+xy^* + y^+xy^*xy^*.
$$
As a bonus, this regular expression is "unambiguous", in the sense that each word belongs to exactly one summand.
We can shorten this expression in many ways. For example, notice that if we consider only words with exactly two $x$s, we can obtain all words in the language by optionally replacing an $x$ with a $y$. This gives us the simpler expression
$$
(x+y)^2y^+ + (x+y)y^+(x+y)y^* + y^+(x+y)y^*(x+y)y^*.
$$
If we want something more symmetric, we can take
$$
y^+(x+y)y^*(x+y)y^* + y^*(x+y)y^+(x+y)y^* + y^*(x+y)y^*(x+y)y^+.
$$