✨ ベストアンサー ✨
なぜyesterdayなのにmay have beenなのでしょうか? → なぜなら、may [have been](動詞・完了形) は過去を表しているからです。
以下のように考えて、覚えておくと良いと思います。
【助動詞+[動詞の完了形]:過去のことを表す】
・must [have ~ed] ~したに違いない
・should [have ~ed] [~する]べきだ[った](のに、しなかった)
・may [have ~ed] [~した]かも知れない
・can't/cannot [have ~ed] [~した]はずがない
参考にしてください。