R glm多元回归:逻辑下标太长

R glm多元回归:逻辑下标太长,r,multivariate-testing,R,Multivariate Testing,我在自学多元回归,我试图模拟一个多元随机变量,并构建一个广义线性模型来拟合它。 这是我的密码: #Clear Previous rm(list=ls()) cmp = 2 #Number of components in sample n = 10 #Number of simulated data points B = matrix(c(1,2,3,4), nrow=2,byrow=TRUE) #Coefficient matrix #Simulate mode

我在自学多元回归,我试图模拟一个多元随机变量,并构建一个广义线性模型来拟合它。 这是我的密码:

#Clear Previous
rm(list=ls())


cmp = 2     #Number of components in sample 
n = 10      #Number of simulated data points 

B = matrix(c(1,2,3,4), nrow=2,byrow=TRUE) #Coefficient matrix 

#Simulate model

X = matrix(rep(0,2*n), nrow=2,byrow=TRUE)          #Initiate independent matrix 
Y = matrix(rep(0,2*n), nrow=2,byrow=TRUE)          #Initiate response matrix

for (j in 1:cmp){

  X[j,] = rnorm(n)      #independent data 
  e = rnorm(n)          #error term
  Y[j,] = B[j,1]+ B[j,2]*X[j,] + e
}

#Linear Regression 

fit = glm(Y~X,family = gaussian())
fit
这会在函数glm中产生以下错误:

Error in x[good, , drop = FALSE] : (subscript) logical subscript too long
我很不确定是什么问题

多元GLM GLM不能处理多个因变量。您可以像下面的代码那样关联单个列,但不能同时关联这两个列。独立数据可以是多变量的

使用
Y[1,]
代替
Y

fit = glm(Y[1,]~t(X),family = gaussian())
此外,上面的行使用转置
t(X)
而不是
X
,因为函数GLM将把行解释为不同的测量值

MANOVA/MANCOVA/线性判别分析 在您的例子中,您似乎使用了高斯分布错误。对于这种特殊情况,有一种方法可以处理多个因变量。它是MANOVA(如果自变量是一个因子)或MANCOVA(如果自变量是连续的)。您可以在R中将其建模为
fit=manova(t(Y)~t(X))

多元GLM GLM不能处理多个因变量。您可以像下面的代码那样关联单个列,但不能同时关联这两个列。独立数据可以是多变量的

使用
Y[1,]
代替
Y

fit = glm(Y[1,]~t(X),family = gaussian())
此外,上面的行使用转置
t(X)
而不是
X
,因为函数GLM将把行解释为不同的测量值

MANOVA/MANCOVA/线性判别分析
在您的例子中,您似乎使用了高斯分布错误。对于这种特殊情况,有一种方法可以处理多个因变量。它是MANOVA(如果自变量是一个因子)或MANCOVA(如果自变量是连续的)。您可以在R中将其建模为
fit=manova(t(Y)~t(X))

您是否有意在矩阵中有两行十列?您想按行或列进行回归吗?@nya是有意的。我试着用列向量代替它,即X和Y都是10x2矩阵,问题仍然存在。运行
glm
时,需要
X
Y
的向量:“典型的预测器的形式是response~项,其中response是(数字的)响应向量和术语是一系列术语,用于指定响应的线性预测值。”@nya我明白了。但我不确定我是否理解。如果我打算将响应向量Y=(y1,y2)从预测向量X=(x1,x2)回归,并且我有10个测量值,那么“数据”将是响应的10x2矩阵和独立的10x2矩阵。所以,如果glm只接受向量输入,我如何合并这两个变量的所有数据?还是我必须按组件来做?例如:Z=c(Y[,1],Y[,2])W=c(X[,1],X[,2])fit=glm(Z~W,family=gaussian())起作用,但我不确定如何解释结果。好吧,结果证明我应该使用函数lm。它不仅可以接受矩阵输入,还可以输出系数矩阵而不是向量。我认为这就是广义线性模型应该做的?你是否有意在你的矩阵中有两行十列?您想按行或列进行回归吗?@nya是有意的。我试着用列向量代替它,即X和Y都是10x2矩阵,问题仍然存在。运行
glm
时,需要
X
Y
的向量:“典型的预测器的形式是response~项,其中response是(数字的)响应向量和术语是一系列术语,用于指定响应的线性预测值。”@nya我明白了。但我不确定我是否理解。如果我打算将响应向量Y=(y1,y2)从预测向量X=(x1,x2)回归,并且我有10个测量值,那么“数据”将是响应的10x2矩阵和独立的10x2矩阵。所以,如果glm只接受向量输入,我如何合并这两个变量的所有数据?还是我必须按组件来做?例如:Z=c(Y[,1],Y[,2])W=c(X[,1],X[,2])fit=glm(Z~W,family=gaussian())起作用,但我不确定如何解释结果。好吧,结果证明我应该使用函数lm。它不仅可以接受矩阵输入,还可以输出系数矩阵而不是向量。我以为这就是广义线性模型应该做的?