La Régression linéaire de la boucle pour chaque variable indépendante individuellement contre dépendante
Je veux comprendre comment créer une boucle ou en utilisant l'un de l'appliquer de fonctions pour obtenir l'individu 1:1 de régression de l'information pour chaque variable dans un dataset par rapport à la variable dépendante.
Permet de dire que je suis en utilisant mtcars. Comment pourrais-je écrire dans la R code qui prend chaque variable dans le bloc de données et régresse contre MPG?
Même mieux serait de se faire un résumé de chaque variable indépendante et avoir une sorte d'affectation de nom tels que x1=, x2=etc
summary(lm(mpg~eachvar,data=mtcars))
Un non-approche standard pour résoudre ce problème: Rapide par paires simple régression linéaire entre les variables dans un bloc de données. Le
general_paired_simpleLM
pourrait être utile lors de tous vos variables sont numériques.OriginalL'auteur runningbirds | 2014-07-30
Vous devez vous connecter pour publier un commentaire.
Hi essayer quelque chose comme ça :
poly
auraient leur place dans lesummary(lm(formula = x...)
composant?OriginalL'auteur Victorp
Cela va le faire pour vous.
De données.image de l'objet est une liste de certains autres caractéristiques, ce qui permettra de passer à travers chaque colonne de mtcars à l'exclusion de la première, et effectuer les régressions. Si vous enregistrez la liste dans quelque chose comme
L
ensuite, vous pouvez accéder à chacun facilement juste en utilisant le même nom ou numéro de la colonne dans les données d'origine.cadre. DoncL$cyl
donne la régression résumé pourmpg
surcyl
.lapply(L, function(x) x$r.squared) ; lapply(L, coef)
OriginalL'auteur John
De données.version de table de Johns solution
Quelques explications sur le code
data.table
va convertirmtcars
à undata.table
objet.SD
est aussi undata.table
objet qui contient les colonnes on veut opérer sur.SDcols = -1
dit.SD
de ne pas utiliser la première colonne (comme nous ne voulons pas d'ajustementlm(mpg ~ mpg)
lapply
juste exécute le modèle sur toutes les colonnes dans.SD
(à l'exception de celui que nous avons sauté) et renvoie les objets de la classelist
Fit
sera une liste de résumés, vous pouvez les contrôler à l'aide deMais vous pouvez aussi travailler sur eux, par exemple, l'application de
coef
fonction sur chaque ajustementOu de l'obtention de la
r.squered
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases
Toutes les idées ce qui conduit à cette erreur? Je veux l'utiliser sur un plutôt "sale" dataset. Se pourrait-il que certaines exceptions sont nécessaires? Est-il par exemple possible d'ajouter untry
déclaration de cette solution pour l'empêcher d'exploser?Cela signifie probablement que l'ensemble de vos valeurs sont NAs probablement. Vous avez besoin de nettoyer vos données ou de les utiliser
tryCatch
. De toute façon, cette réponse est vieux et a besoin d'une mise à jour.Je vous remercie pour votre réponse. Je pensais que, au premier abord, mais j'ai enlevé toutes les variables où toutes les valeurs (plus de 99%) ont été NA. Pour mon (énorme) dataset peut-être qu'il est plus probable qu'il existe des non-variables numériques? Mais je suppose alors
tryCatch
serait encore la solution. Je n'ai pas utilisédata.table
beaucoup encore. Serait-il possible de me montrer où à intégrer lestryCatch
?Vous pouvez simplement vérifier que la variable est numérique d'abord, par exemple,
data.table(mtcars)[, .(MyFits = lapply(.SD, function(x) if(is.numeric(x)) summary(lm(mpg ~ x)))), .SDcols = -1]
Merci, j'ai encore du mal à voir comment je appliquer ce genre de déclaration. Lorsque j'ai appliqué votre solution de
mtcars
par la façon dont je reçois alors les lignes qui commence commelist(call = lm(formula = mpg ~ x), terms = mpg ~ x, residu..
Était-ce le résultat voulu ou est-ce que quelque chose va mal il?OriginalL'auteur David Arenburg