我希望能够通过提供相关性或协方差矩阵而不是 data.frame 来从多元线性回归中回归系数。我意识到您丢失了一些与确定截距等相关的信息,但即使是相关矩阵也应该足以解释标准化系数和方差估计。
例如,如果您有以下数据
# get some data
library(MASS)
data("Cars93")
x <- Cars93[,c("EngineSize", "Horsepower", "RPM")]
您可以按如下方式运行回归:
lm(EngineSize ~ Horsepower + RPM, x)
但是如果你有相关矩阵或协方差矩阵而不是数据呢:
corx <- cor(x)
covx <- cov(x)
lm
这样您就可以轻松获得 r 平方、调整后的 r 平方、预测值等内容。据推测,对于其中一些事情,您还需要提供样本大小和可能的均值向量。但这也没关系。 即,类似于:
lm(EngineSize ~ Horsepower + RPM, cov = covx) # obviously this doesn't work
请注意,此答案位于 Stats.SE提供了为什么可能的理论解释,并提供了一些用于计算系数的自定义 R 代码的示例?
最佳答案
使用 lavaan 您可以执行以下操作:
library(MASS)
data("Cars93")
x <- Cars93[,c("EngineSize", "Horsepower", "RPM")]
lav.input<- cov(x)
lav.mean <- colMeans(x)
library(lavaan)
m1 <- 'EngineSize ~ Horsepower+RPM'
fit <- sem(m1, sample.cov = lav.input,sample.nobs = nrow(x), meanstructure = TRUE, sample.mean = lav.mean)
summary(fit, standardize=TRUE)
结果是:
Regressions:
Estimate Std.Err Z-value P(>|z|) Std.lv Std.all
EngineSize ~
Horsepower 0.015 0.001 19.889 0.000 0.015 0.753
RPM -0.001 0.000 -15.197 0.000 -0.001 -0.576
Intercepts:
Estimate Std.Err Z-value P(>|z|) Std.lv Std.all
EngineSize 5.805 0.362 16.022 0.000 5.805 5.627
Variances:
Estimate Std.Err Z-value P(>|z|) Std.lv Std.all
EngineSize 0.142 0.021 6.819 0.000 0.142 0.133
关于r - 如何使用相关或协方差矩阵而不是使用 R 的数据框获得回归系数和模型拟合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38558278/