J'utilise R 3.3.2.Créer une prévision pour les sous-ensembles de données et ajouter au fichier original
Je voudrais prédire des dizaines d'établissements pour divers sous-locations en fonction de leurs résultats des années précédentes. Ensuite, j'ai besoin d'ajouter ces scores prédits en tant que nouvelles lignes à l'image originale. Mon entrée est un fichier csv
Je veux utiliser le modèle linéaire des moindres carrés et je trouve que "lm" et "predict" font exactement ce dont j'ai besoin.
Je sais que c'est une question assez débutante, mais j'espère que quelqu'un pourra m'aider. S'il vous plaît voir ci-dessous les données et le code avec deux solutions que j'ai commencé.
score<-c(63.6, 60.3, 60.4, 53.4, 46.5, 65.8, 45.8, 65.9,
44.9, 60, 83.5, 81.7, 81.2, 78.8, 83.3, 79.4, 83.2, 77.3,
79.4)
year<-c(2013, 2014, 2015, 2016, 2014, 2014, 2015, 2015,
2016, 2016, 2011, 2012, 2013, 2014, 2014, 2015, 2015,
2016, 2016)
institution<-c(1422, 1422, 1422, 1422, 1384, 1422, 1384,
1422, 1384, 1422, 1384, 1384, 1384, 1422, 1384, 1422,
1384, 1422, 1384)
subranking<-c('CMP', 'CMP', 'CMP', 'CMP', 'SSC', 'SSC', 'SSC',
'SSC', 'SSC', 'SSC', 'ETC', 'ETC', 'ETC', 'ETC', 'ETC', 'ETC',
'ETC', 'ETC', 'ETC')
d <- data.frame(score, year, institution,subranking)
#-----------SOLUTION 1 -------------------
p<- unique(d$institution)
for (i in (1:length(p))){
x<- d$score[d$institution==p[i]]
y<- d$year[d$institution==p[i]]
model<- lm(x~y)
result<-predict(model, data.frame(y = c(2017,2018,2019,2020)))
z<- cbind(result,data.frame(y = c(2017,2018,2019,2020)))
print(z)
}
##----------SOLUTION 2 -------------------
calculate_predicted_scores <- function(scores, years) {predicted_scores <-0
mod = lm(scores ~ years)
predicted_scores<-predict(mod, data.frame(years = c(2017,2018,2019,2020)))
return(predicted_scores)
}
Pour illustrer, voici ce que je veux à la fin - les lignes jaunes sont les prédictions:
@Ago https: // stackoverflow.com/help/someone-answers: Accepter une réponse est important car il récompense à la fois les affiches pour résoudre votre problème et informe les autres que votre problème est résolu –
Seriez-vous capable de m'aider avec comment je pourrais obtenir le même résultat en utilisant les deux solutions alternatives que j'ai commencé dans mon script original? – Ago
Vous dites 'Je voudrais prédire des dizaines d'institutions pour différents sous-planings en fonction de leurs scores des années précédentes' Cependant, dans les deux solutions (1 & 2), vous laissez la variable subranking. Une double boucle ou une fonction ajustée ferait ce qu'on fait avec dplyr et balai dans ma réponse mais est-ce vraiment ce que tu veux? Je veux dire méthodologiquement pas par programme. Ne voulez-vous pas prendre en compte les variables institution/subrank dans l'équation de régression? Si vous dites oui ou je ne suis pas sûr, je vous conseille de visiter et demander dans CrossValidated comme question méthodologique sont hors de portée de StakOverflow. –