web-dev-qa-db-fra.com

R: sortie d'erreur standard de l'objet lm

Nous avons obtenu un objet lm et voulons extraire l'erreur standard

lm_aaa<- lm(aaa~x+y+z)

Je connais le résumé des fonctions, les noms et les coefficients. Cependant, le résumé semble être le seul moyen d'accéder manuellement à l'erreur standard. Avez-vous une idée de la façon dont je peux simplement sortir en soi?

merci!

22
Fabian Stolz

La sortie de la fonction summary est juste un R liste. Vous pouvez donc utiliser toutes les opérations de liste standard. Par exemple:

#some data (taken from Roland's example)
x = c(1,2,3,4)
y = c(2.1,3.9,6.3,7.8)

#fitting a linear model
fit = lm(y~x)
m = summary(fit)

L'objet ou la liste m possède un certain nombre d'attributs. Vous pouvez y accéder en utilisant le support ou l'approche nommée:

m$sigma
m[[6]]

Une fonction pratique à connaître est, str. Cette fonction fournit un résumé des attributs des objets, c'est-à-dire.

str(m)
20
csgillespie

Pour obtenir une liste des erreurs standard pour tous les paramètres, vous pouvez utiliser

summary(lm_aaa)$coefficients[, 2]

Comme d'autres l'ont souligné, str(lm_aaa) vous dira à peu près toutes les informations qui peuvent être extraites de votre modèle.

12
smillig
#some data
x<-c(1,2,3,4)
y<-c(2.1,3.9,6.3,7.8)

#fitting a linear model
fit<-lm(y~x)

#look at the statistics summary
summary(fit)

#get the standard error of the slope
se_slope<-summary(fit)$coef[[4]] 
#the index depends on the model and which se you want to extract

#get the residual standard error
rse<-summary(fit)$sigma
8
Roland

Si vous ne souhaitez pas obtenir l'erreur/l'écart-type du modèle , mais plutôt l'erreur/l'écart-type du coefficients individuels , utilisez

# some data (taken from Roland's example)
x = c(1, 2, 3, 4)
y = c(2.1, 3.9, 6.3, 7.8)

# fitting a linear model
fit = lm(y ~ x)

# get vector of all standard errors of the coefficients
coef(summary(fit))[, "Std. Error"] 

Pour plus d'informations sur l'erreur standard/l'écart du modèle, voir ici . Pour plus d'informations sur l'erreur standard/l'écart des coefficients, voir ici .

2
Annerose N

Je pense que les lignes suivantes peuvent également vous fournir une réponse rapide:

lm_aaa<- lm(aaa~x+y+z)
se <- sqrt(diag(vcov(lm_aaa)))
1
Whitebeard13