Hi, this is my first post here, any help would be hugely appreciated.
I'm not too familiar with loops and I'm attempting to make a very complicated one on premier league data with a poisson model contained in the loop. I'm basically trying to use the results of the poisson model for the goals scored for each team and to turn these scores into actual results (Home win, Away win or Draw).
The code is as follows:
for (i in 1:320) {
poissonclassifier[i] = {
home[i] = predict(poissonmodel,
data.frame(home=1, team = prem[i,2],
opponent =prem[i,3]), type="response")
away[i] = predict(poissonmodel,
data.frame(home=0, team=prem[i,1],
opponent=prem[i,2]), type="response")
game[i] = dpois(0:5, home[i]) %o% dpois(0:5, away[i])
rownames(game[i]) = 0:5
colnames(game[i]) = 0:5
H = sum(game[i][lower.tri(game[i])])
D = sum(game[i][diag(game[i])])
A = sum(game[i][upper.tri(game[i])])
result[i] = max("H","D","A")
result[i]}
}
where
poissonmodel = glm(goals ~ home + team + opponent, family=poisson(link=log),data=prem)
home[i] and away[i] predict the number of goals for the home and away teams respectively, and 'prem' is a table of the games this season, with 'home' as 1 to indicate the home team, and 0 to indicate the away team. (For example in the first row below, liverpool is the home team and there is a 1 in the home column, so the total goals for liverpool in this game was 4). Below is the first 10 rows of this dataset:
goals team opponent home
1 4 Liverpool Norwich 1
2 0 West Ham Man City 1
3 1 Bournemouth Sheffield United 1
4 3 Burnley Southampton 1
5 0 Crystal Palace Everton 1
6 0 Watford Brighton 1
7 3 Tottenham Aston Villa 1
8 0 Leicester Wolves 1
9 0 Newcastle Arsenal 1
10 4 Man United Chelsea 1
I'm mainly confused as to why I get the error message above, as I need to keep "team" as a factor variable not a numeric variable so I know which team has played which.
I appreciate that this is a lot of information at once and there may not be one single answer, so any help would be greatly appreciated. If you spot any other mistakes with my code don't hesitate to say too!!
Thanks