data.frame ~ colnames 行上的 lm()
lm() on row of data.frame ~ colnames
我尝试对数据框执行简单的 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)
但是,这不会降低 d
的维度。不知道为什么。如果有人也能回答这个问题,即使对 R 的更一般的理解也会对我有很大帮助。
我不得不对你打算做什么做一些假设,因为你没有主动澄清它。
我假设您希望数据框的每一行都有不同的独立回归线。换句话说,您有多个响应(每行一个),但有一个共同的协变量:
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"(多重线性模型)。您在上面看到的系数矩阵,每一列都与每个响应相关联。
我尝试对数据框执行简单的 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)
但是,这不会降低 d
的维度。不知道为什么。如果有人也能回答这个问题,即使对 R 的更一般的理解也会对我有很大帮助。
我不得不对你打算做什么做一些假设,因为你没有主动澄清它。
我假设您希望数据框的每一行都有不同的独立回归线。换句话说,您有多个响应(每行一个),但有一个共同的协变量:
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"(多重线性模型)。您在上面看到的系数矩阵,每一列都与每个响应相关联。