我想找到具有两个分类变量的数据集的最小二乘平均值。他们是性别,高于/低于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
答案 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