我尝试对数据框执行简单的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理解也会帮助我度过难关。
答案 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”(多个线性模型)。您在上面看到的系数矩阵,每列都与每个响应相关联。