lsmeans取我的分类变量的平均值 - 如何避免?

时间:2014-02-27 12:27:16

标签: r

我想找到具有两个分类变量的数据集的最小二乘平均值。他们是性别,高于/低于55岁。矩阵中的值是看电视的小时数。

我想找到Age55yr和Gender的最小二乘法。问题是lsmeans也找到了分类变量的方法(它们表示为1或2)。因此,不是为1(男性)和2(女性)获得一行,而是获得一个平均行(值为1.51)。

> lsmeans(tv_age_lm, ~ Gender)的输出是:

$`Gender lsmeans`
   Gender   lsmean        SE  df lower.CL upper.CL
 1.514563 29.59223 0.4416212 100 28.71607  30.4684

我的期望是:

 $`Gender lsmeans`
   Gender   lsmean        SE  df lower.CL upper.CL
        1   29.59223 0.4416212 100 28.71607  30.4684
        2   29.59223 0.4416212 100 28.71607  30.4684

也就是说,我预计我的分类变量将保留在一个单独的行中,而不是平均值。我如何实现这一目标?

这是重现错误所需的代码:

install.packages("lsmeans", repos="http://cran.rstudio.com/")
library(lsmeans)
tvfile <- read.csv2("TVwatch.csv", header=TRUE)
tv_age_lm = lm(TVhrs ~ Age55yr + Gender, data=tvfile)
lsmeans(tv_age_lm, ~ Age55yr)
lsmeans(tv_age_lm, ~ Gender)

数据文件位于:http://textuploader.com/1u27

1 个答案:

答案 0 :(得分:3)

目前,列Gender中的值表示为整数。既然它是一个分类变量,你必须将它转换为一个因子:

tvfile$Gender <- as.factor(tvfile$Gender)

现在,您可以使用lsmeans

tv_age_lm = lm(TVhrs ~ Age55yr + Gender, data=tvfile)

lsmeans(tv_age_lm, ~ Gender)

#  $`Gender lsmeans`
#   Gender   lsmean        SE  df lower.CL upper.CL
#        1 26.84099 0.6355195 100 25.58013 28.10184
#        2 32.18775 0.6171792 100 30.96328 33.41222