2015-08-31 2 views
1

Le package lsmeans facilite l'obtention de moyennes marginales prédites, tant que vous le faites manuellement. Je veux automatiser ceci dans une fonction qui utilise seulement les moyens prédits.Comment extraire des moyennes marginales prédites à partir d'un lsmobj

Voici un exemple de la vignette:

library("lsmeans") 
data(oranges) 
oranges.lm1 <- lm(sales1 ~ price1 + price2 + day + store, data = oranges) 
lsmeans(oranges.lm1, "day") 
# day lsmean  SE df lower.CL upper.CL 
# 1 5.564415 1.768083 23 1.906856 9.221974 
# 2 6.494807 1.728959 23 2.918183 10.071430 
# 3 13.664571 1.751505 23 10.041308 17.287835 
# 4 8.742289 1.733920 23 5.155403 12.329175 
# 5 15.441803 1.785809 23 11.747576 19.136029 
# 6 11.394782 1.766726 23 7.740031 15.049533 

Ce que je voudrais est quelque chose comme ceci:

lsmeans(oranges.lm1, "day")[,2] 
# 5.564415 6.494807 13.664571 8.742289 15.441803 11.394782 

Mais cela ne fonctionne pas (il imprime le même résultat que ci-dessus). Je ne sais pas si c'est parce que le résultat (un objet lsmobj) est un objet S4. Comment puis-je extraire uniquement la colonne lsmean en tant que vecteur?

Répondre

1

La bonne façon, comme l'a souligné @rvl, serait d'utiliser predict

predict(lsmeans(oranges.lm1, "day")) 

Une alternative moins efficace serait summary, qui appellera à son tour lsmeans:::summary.ref.grid

summary(lsmeans(oranges.lm1, "day"))[,2] 
# [1] 5.564415 6.494807 13.664571 8.742289 15.441803 11.394782 
+0

Merci! (Je jure que j'ai essayé ça ...) – gung

+0

: p pas de problème, je pensais qu'il pourrait y avoir un autre chemin à travers l'un des slots ('showClass (" lsmobj ")') mais je ne pouvais pas le trouver – jenesaisquoi

+0

(lsmeans (...)) ' – rvl