更新:来自lme4包的lmer-函数可以提供一个答案.
10名参加者参加了一个减肥方案,如下所示:
mydata<-as.data.frame(matrix(c(140,125,120,115,110,110,110,105,100,90,85,100,140,70,100,
100,140,120,220,190,90,100,120,60,90,110,130,110,120,140,NA,65,110,50,NA,90,120,NA,130,
150,NA,60,NA,45,NA,NA,110,NA,160,NA),nrow=10,dimnames=list(c(1:10),c("IQ","Weight.year.1"
,"Weight.year.2","Weight.year.3","Weight.year.4"))))我想知道智商是否预示着减肥的成功。
我不应该计算δ,即lm((Weight.year.1-Weight.year.4)~IQ,data=mydata),因为体重较重的人有更大的减肥潜力,结果是有偏见的。由于许多失误,它也失败了。
一种想法是计算和使用特定于人的系数,即sapply(1:10,function(i){lm(t(mydata[i,2:5])~c(1:4))$coefficients[2]}),然而,它仍然与基线权重有关。
我希望用随机拦截进行一次新的尝试,但遗憾的是,我不太明白如何在R中编写这个代码,有谁知道运行这种分析的代码吗?任何帮助都将不胜感激!!
最亲切的问候。
发布于 2016-03-24 13:38:51
这里没有统计学家,但你不能把基线权重也考虑进去吗?
这就是我想出来的,快速的,肮脏的:
library(dplyr)
library(tidyr)
mydata<-as.data.frame(matrix(c(140,125,120,115,110,110,110,105,100,90,85,100,140,70,100,
100,140,120,220,190,90,100,120,60,90,110,130,110,120,140,NA,65,110,50,NA,90,120,NA,130,
150,NA,60,NA,45,NA,NA,110,NA,160,NA),nrow=10,dimnames=list(c(1:10),c("IQ","Weight.year.1"
,"Weight.year.2","Weight.year.3","Weight.year.4"))))
newdata <- mydata %>%
gather("period", "weight", -IQ) %>%
mutate(period = gsub("Weight.year.", "", period) %>% as.integer()) %>%
full_join(mydata, by = "IQ")
lm( weight ~ IQ + Weight.year.1 + period, data = newdata ) %>% summary()这导致:
呼叫:lm(公式=权重~ IQ +加权.年份1+周期,数据=新数据) 残差:最小1Q中位数3Q最大值-43.978 -14.248 0.136 13.100 47.484 系数:估计性病。错误t值Pr(>\x) (截获) 150.79400 52.30548 2.883 0.00602 **智商-0.70584 0.39301 -1.796 0.07921。 加权年份1 0.45839 0.09481 4.835 1.59e-05 * 期间-8.53867 2.97500 -2.870 0.00623 ** 信号。编码:0‘’0.001‘__’0.01‘’0.05‘.’0.1‘’1 残差标准误差: 21.03在45自由度上(15次观测因丢失而删除)倍数R-平方: 0.6019,修正R-平方: 0.5753 F-统计量: 22.68 on 3,45 DF,p-值:4.286 e-09
https://stackoverflow.com/questions/36199492
复制相似问题