totalAttendance needs to be bounded, likely by 0 and the capacity of the arena.
gainAttendance is the maximum amount you would want Attendance to differ between games.
deltaAttendance is the difference in current attendance to last game's attendance.
lastAttendance is the attendance from the previous game.
Each of your criteria needs a weight, each weight to be determined by yourself and a spreadsheet. Each criteria also needs to be bounded, by 0 some arbitrary maximum (what's the max Steak that will make a difference in attendance, what's the max quality that will matter). These need to be normalized to between 0 and 1 (divide actual value by your arbitrary maximum for each criteria).
Weighted & Normalize Opposition Quality becomes wnOpposition.
Weighted & Normalize Home Team Match Streak becomes wnStreak.
Weighted & Normalize Home Team Flair becomes wnFlair.
** Apply Weights before Normalizing, to ensure values are all below 1. Weights essentially are how important a given criteria is, compared to the other criteria. For example, if you wanted Opposition Quality to affect Attendance more than Flair, you could multiply Flair by a Weight of 1, and Opposition by a Weight of 1.5.
Previous Attendance can serve as a relevant starting point for the next game's attendance, and the above criteria can serve to determine the offset.
If you are going to use a winning streak as criteria, you will also want total wins, or win vs loss ratio. If you use only winning streak, as soon as the streak comes to an end, the next game will have significantly less attendance, depending on the weight you give Streak.
So what we end up with is:
deltaAttendance = Average of ( wnOpposition, wnStreak, wnFlair )
actualAttendance = lastAttendance + ( gainAttendance * ( deltaAttendance )