Comment extraire la valeur p (pour la signification du coefficient de la variable explicative unique étant non nulle) et la valeur R au carré d'un modèle de régression linéaire simple? Par exemple...
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
Je sais que cela summary(fit)
affiche la valeur p et la valeur R au carré, mais je veux pouvoir les coller dans d'autres variables.
r <- summary(lm(rnorm(10)~runif(10)))
n'affiche rien).Réponses:
r-squared : vous pouvez renvoyer la valeur r-squared directement à partir de l'objet de résumé
summary(fit)$r.squared
. Consulteznames(summary(fit))
la liste de tous les éléments que vous pouvez extraire directement.Valeur p du modèle: Si vous souhaitez obtenir la valeur p du modèle de régression global, cet article de blog décrit une fonction pour renvoyer la valeur p:
Dans le cas d'une régression simple avec un seul prédicteur, la p-value du modèle et la p-value du coefficient seront les mêmes.
Valeurs p du coefficient: Si vous avez plus d'un prédicteur, alors ce qui précède renverra la valeur p du modèle, et la valeur p des coefficients peut être extraite en utilisant:
Vous pouvez également saisir la valeur p des coefficients de l'
anova(fit)
objet de la même manière que l'objet récapitulatif ci-dessus.la source
inherits
plutôt queclass
directement. Et peut-être que tu veuxunname(pf(f[1],f[2],f[3],lower.tail=F))
?Remarquez que
summary(fit)
génère un objet avec toutes les informations dont vous avez besoin. Les vecteurs bêta, se, t et p y sont stockés. Obtenez les p-values en sélectionnant la 4ème colonne de la matrice des coefficients (stockée dans l'objet de synthèse):Essayez
str(summary(fit))
de voir toutes les informations que cet objet contient.Edit: j'avais mal lu la réponse de Chase qui vous dit essentiellement comment arriver à ce que je donne ici.
la source
summary(fit)$coefficients[1,4]
pour thei nterceptlm()
mais ne fonctionne pas pour lesgls()
modèles.Vous pouvez voir la structure de l'objet renvoyé par
summary()
en appelantstr(summary(fit))
. Chaque pièce est accessible en utilisant$
. La valeur p de la statistique F est plus facilement obtenue à partir de l'objet renvoyé paranova
.En résumé, vous pouvez le faire:
la source
Bien que les deux réponses ci-dessus soient bonnes, la procédure d'extraction de parties d'objets est plus générale.
Dans de nombreux cas, les fonctions renvoient des listes et les composants individuels sont accessibles en utilisant
str()
ce qui imprimera les composants avec leurs noms. Vous pouvez ensuite y accéder en utilisant l'opérateur $, c'est-à-diremyobject$componentname
.Dans le cas des objets lm, il y a un certain nombre de méthodes prédéfinies , on peut utiliser par exemple
coef()
,resid()
,summary()
etc, mais vous ne serez pas toujours aussi chanceux.la source
Je suis tombé sur cette question en explorant des solutions suggérées pour un problème similaire; Je suppose que pour référence future, il peut être utile de mettre à jour la liste de réponses disponibles avec une solution utilisant le
broom
package.Exemple de code
Résultats
Notes annexes
Je trouve que la
glance
fonction est utile car elle résume parfaitement les valeurs clés. Les résultats sont stockés sous forme de,data.frame
ce qui facilite la manipulation ultérieure:la source
Extension de l » @Vincent réponse :
Pour les
lm()
modèles générés:Pour les
gls()
modèles générés:Pour isoler une valeur de p individuelle elle-même, ajoutez un numéro de ligne au code:
Par exemple, pour accéder à la valeur p de l'intersection dans les deux résumés du modèle:
Notez que vous pouvez remplacer le numéro de colonne par le nom de la colonne dans chacune des instances ci-dessus:
Si vous ne savez toujours pas comment accéder à un formulaire de valeur, le tableau récapitulatif utilise
str()
pour déterminer la structure du tableau récapitulatif:la source
C'est le moyen le plus simple d'extraire les valeurs p:
la source
J'ai utilisé cette fonction lmp plusieurs fois.
Et à un moment donné, j'ai décidé d'ajouter de nouvelles fonctionnalités pour améliorer l'analyse des données. Je ne suis pas expert en R ou en statistiques mais les gens recherchent généralement des informations différentes d'une régression linéaire:
Prenons un exemple. Vous avez ici
Voici un exemple reproductible avec différentes variables:
Il existe certes une solution plus rapide que cette fonction mais cela fonctionne.
la source
Pour la valeur p finale affichée à la fin de
summary()
, la fonction utilisepf()
pour calculer à partir dessummary(fit)$fstatistic
valeurs.Source: [1] , [2]
la source
la source
Une autre option consiste à utiliser la fonction cor.test, au lieu de lm:
la source
Utilisation:
où
num
est un nombre qui désigne la ligne de la matrice des coefficients. Cela dépendra du nombre de fonctionnalités que vous avez dans votre modèle et de celle pour laquelle vous souhaitez extraire la valeur p. Par exemple, si vous n'avez qu'une seule variable, il y aura une valeur p pour l'interception qui sera [1,4] et la suivante pour votre variable réelle qui sera [2,4]. Donc, vousnum
serez 2.la source