lm()在data.frame~colnames的行上

时间:2016-09-26 15:55:12

标签: r dataframe regression linear-regression lm

我尝试对数据框执行简单的declare @t int set @t=null if (@t>0) print '1' -- works fine if (@t<0) print '2' --works fine if (@t>0) print '3' --works fine else print '4' --here we start getting problems, because we are sure that @t<=0 that is obviously not true 回归分析。显然,我想在数据框的列名和每行之间执行回归分析。我的数据框如下所示:

lm()

但是,我的d = data.frame(replicate(6,rnorm(6))) colnames(d) = as.character(0:5) 不起作用:

lm()

如果有人帮助我开始运行,我将非常感激。我还没有使用lm(d[1,]~colnames(d)) #Error in model.frame.default(formula = d[1, ] ~ colnames(d), drop.unused.levels = TRUE) : #invalid type (list) for variable 'd[1, ]' 函数。

我知道lm()函数需要lm()格式的内容,因此我尝试在此处发布问题之前为我的数据构建数据框:

lm(columnA ~ columnB, data = mydata)

但是,这不会降低cbind(d[1,],0:5) 的尺寸。不知道为什么。如果一个人也可以回答这个问题,即使更为普遍的R理解也会帮助我度过难关。

1 个答案:

答案 0 :(得分:0)

我必须对你打算做什么做一些假设,因为你没有积极地澄清它。

我假设您希望数据框的每一行都有不同的独立回归线。换句话说,您有多个响应(每行一个),但有一个共同的协变量:

x <- 1:ncol(d) - 1

因此,你可以做到

fit <- lm(t(d) ~ x)

#Call:
#lm(formula = t(d) ~ x)

#Coefficients:
#             [,1]      [,2]      [,3]      [,4]      [,5]      [,6]    
#(Intercept)   0.23133   0.48307   0.07867   0.62308   0.71174   0.89866
#x             0.02964  -0.30077  -0.05160   0.06321  -0.17155  -0.43689

fit不是标准的“lm”对象,而是“mlm”(多个线性模型)。您在上面看到的系数矩阵,每列都与每个响应相关联。