1

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

#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

我很不确定问题是什么。

4

1 回答 1

0

多元 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))

于 2020-11-18T11:30:53.427 回答