R 如果我想要一个单一的线性回归模型,而不是一个;传销;?
我已在下图中共享了我正在处理的前9行数据(R 如果我想要一个单一的线性回归模型,而不是一个;传销;?,r,regression,linear-regression,lm,mlm,R,Regression,Linear Regression,Lm,Mlm,我已在下图中共享了我正在处理的前9行数据(y0至y6为输出,其余为输入): 我的目标是获得y0到y6的拟合输出数据 我使用以下命令尝试了R中的lm函数: lm1 <- lm(cbind(y0, y1, y2, y3, y4, y5, y6) ~ tt + tcb + s + l + b, data = table3) summary(lm1) lm1Bycbind(y0,y1,y2,y3,y4,y5,y6) 对于您要查找的内容,将y*变量堆叠起来,复制其他自变量,然后进行一次回归 Y
y0
至y6
为输出,其余为输入):
我的目标是获得y0
到y6
的拟合输出数据
我使用以下命令尝试了R中的lm
函数:
lm1 <- lm(cbind(y0, y1, y2, y3, y4, y5, y6) ~ tt + tcb + s + l + b, data = table3)
summary(lm1)
lm1Bycbind(y0,y1,y2,y3,y4,y5,y6)
对于您要查找的内容,将y*
变量堆叠起来,复制其他自变量,然后进行一次回归
Y <- c(y0, y1, y2, y3, y4, y5, y6)
tt. <- rep(tt, times = 7)
tcb. <- rep(tcb, times = 7)
s. <- rep(s, times = 7)
l. <- rep(l, times = 7)
b. <- rep(b, times = 7)
fit <- lm(Y ~ tt. + tcb. + s. + l. + b.)
适用于OP以外的其他读者
我在此准备一个小的可重复的例子(只有一个协变量x
和两个重复y1
,y2
)来帮助您理解这个问题
set.seed(0)
dat_wide <- data.frame(x = round(runif(4), 2),
y1 = round(runif(4), 2),
y2 = round(runif(4), 2))
# x y1 y2
#1 0.90 0.91 0.66
#2 0.27 0.20 0.63
#3 0.37 0.90 0.06
#4 0.57 0.94 0.21
## The original "mlm"
fit_mlm <- lm(cbind(y1, y2) ~ x, data = dat_wide)
额外的变量time
和id
被创建。前者告诉我们案例来自哪个复制品;后者告诉您案例在复制中的记录
为了使同一模型适用于所有复制品,我们需要
fit1 <- lm(y ~ x, data = dat_long)
#(Intercept) x
# 0.2578 0.5801
matrix(fitted(fit1), ncol = 2) ## there are two replicates
# [,1] [,2]
#[1,] 0.7798257 0.7798257
#[2,] 0.4143822 0.4143822
#[3,] 0.4723891 0.4723891
#[4,] 0.5884029 0.5884029
通过cbind(y0,y1,y2,y3,y4,y5,y6)
我们拟合了7个独立的模型(这是一个更好的想法)
对于您要查找的内容,将y*
变量堆叠起来,复制其他自变量,然后进行一次回归
Y <- c(y0, y1, y2, y3, y4, y5, y6)
tt. <- rep(tt, times = 7)
tcb. <- rep(tcb, times = 7)
s. <- rep(s, times = 7)
l. <- rep(l, times = 7)
b. <- rep(b, times = 7)
fit <- lm(Y ~ tt. + tcb. + s. + l. + b.)
适用于OP以外的其他读者
我在此准备一个小的可重复的例子(只有一个协变量x
和两个重复y1
,y2
)来帮助您理解这个问题
set.seed(0)
dat_wide <- data.frame(x = round(runif(4), 2),
y1 = round(runif(4), 2),
y2 = round(runif(4), 2))
# x y1 y2
#1 0.90 0.91 0.66
#2 0.27 0.20 0.63
#3 0.37 0.90 0.06
#4 0.57 0.94 0.21
## The original "mlm"
fit_mlm <- lm(cbind(y1, y2) ~ x, data = dat_wide)
额外的变量time
和id
被创建。前者告诉我们案例来自哪个复制品;后者告诉您案例在复制中的记录
为了使同一模型适用于所有复制品,我们需要
fit1 <- lm(y ~ x, data = dat_long)
#(Intercept) x
# 0.2578 0.5801
matrix(fitted(fit1), ncol = 2) ## there are two replicates
# [,1] [,2]
#[1,] 0.7798257 0.7798257
#[2,] 0.4143822 0.4143822
#[3,] 0.4723891 0.4723891
#[4,] 0.5884029 0.5884029
欢迎来到SO!请阅读感谢您的输入。感谢您的输入。基本上,我想构建一个方程,如:Y=a+(tt x系数1)+(s x系数2)+(l x系数3)+(b x系数4),其中;a是截距。Y对应于y0、y1至y6的拟合值。所以我的要求是所有7个输出都有相同的模型系数。任何帮助都将不胜感激。我确实是统计和建模领域的新手!谢谢,欢迎光临!请阅读感谢您的输入。感谢您的输入。基本上,我想构建一个方程,如:Y=a+(tt x系数1)+(s x系数2)+(l x系数3)+(b x系数4),其中;a是截距。Y对应于y0、y1至y6的拟合值。所以我的要求是所有7个输出都有相同的模型系数。任何帮助都将不胜感激。我确实是统计和建模领域的新手!谢谢,谢谢。以下是在一个y中获得所有输出的方法。然后是lm。库(重塑2)数据存储库。以下是在一个y中获得所有输出的方法。然后是lm。图书馆(2)dat2
coef(summary(fit1))
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 0.2577636 0.2998382 0.8596755 0.4229808
#x 0.5800691 0.5171354 1.1216967 0.3048657
coef(summary(fit2))
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 0.2577636 0.01385864 18.59949 0.002878193
#x 0.5800691 0.02390220 24.26844 0.001693604