Existe-t-il un moyen simple dans R de créer une régression linéaire sur un modèle avec 100 paramètres dans R? Disons que nous avons un vecteur Y avec 10 valeurs et un cadre de données X avec 10 colonnes et 100 lignes En notation mathématique, j'écrirais Y = X[[1]] + X[[2]] + ... + X[[100]]
. Comment écrire quelque chose de similaire dans la syntaxe R?
22
Réponses:
Essaye ça
la source
y ~ . + .^2
. Etc.y ~ . + .:x1
vous obtiendra les interactions de chaque variable (saufx1
) avecx1
. Etc; vous avez eu l'idée.Excellentes réponses!
J'ajouterais que par défaut, faire appel
formula
à adata.frame
crée une formule additive pour régresser la première colonne sur les autres.Donc, dans le cas de la réponse de @ danas.zuokas, vous pouvez même faire
qui est interprété correctement.
la source
R
opérateurs sont surchargés :)Si chaque ligne est une observation et chaque colonne est un prédicteur de sorte que est un vecteur de longueur et est une matrice ( dans ce cas), alors vous pouvez le faire avecn X n × p p = 100Oui n X n×p p=100
S'il y a d'autres colonnes que vous ne vouliez pas inclure comme prédicteurs, vous devez les supprimer
X
avant d'utiliser cette astuce ou les utiliser-
dans la formule du modèle pour les exclure. Par exemple, si vous souhaitez exclure le 67e prédicteur (qui a le nom correspondantx67
), vous pouvez écrireDe plus, si vous souhaitez inclure des interactions, etc., vous devrez les ajouter manuellement comme (par exemple)
ou assurez-vous qu'ils sont entrés sous forme de colonnes de
X
.la source
Vous pouvez également utiliser une combinaison des fonctions
formula
etpaste
.Données de configuration : Imaginons que nous ayons un data.frame qui contient les variables prédictives
x1
dex100
et notre variable dépendantey
, mais qu'il existe également une variable de nuisanceasdfasdf
. Les variables prédictives sont également organisées dans un ordre tel qu'elles ne sont pas toutes contiguës dans le data.frame.Imaginez également que vous ayez une chaîne contenant les noms des variables prédictives. Dans ce cas, cela peut facilement être créé à l'aide de la
paste
fonction, mais dans d'autres situations,grep
ou une autre approche peut être utilisée pour obtenir cette chaîne.Appliquer l'approche : on peut alors construire une formule comme suit:
collapse
argument insère+
entre les variables prédictivesformula
convertit la chaîne en un objet de formule de classe adapté à lalm
fonction.Plus généralement, j'utilise la fonction suivante assez régulièrement lorsque je souhaite fournir une variable prédictive comme vecteur de nom de variable.
Par exemple,
la source
do.call
évaluation de la formule avant d'appelerlm
.