Jer*_*lim 6 regression r linear-regression lm
我希望能够通过提供相关或协方差矩阵而不是 data.frame 来从多元线性回归中回归系数。我意识到您丢失了一些与确定截距等相关的信息,但即使是相关矩阵也应该足以获得标准化系数和解释的方差估计。
例如,如果您有以下数据
# get some data
library(MASS)
data("Cars93")
x <- Cars93[,c("EngineSize", "Horsepower", "RPM")]
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式运行回归:
lm(EngineSize ~ Horsepower + RPM, x)
Run Code Online (Sandbox Code Playgroud)
但是如果没有数据而是相关矩阵或协方差矩阵怎么办:
corx <- cor(x)
covx <- cov(x)
Run Code Online (Sandbox Code Playgroud)
lm以便您可以轻松获得 r 平方、调整后的 r 平方、预测值等。据推测,对于其中一些事情,您还需要提供样本大小以及可能的均值向量。但那样也好。即,类似:
lm(EngineSize ~ Horsepower + RPM, cov = covx) # obviously this doesn't work
Run Code Online (Sandbox Code Playgroud)
请注意,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)
Run Code Online (Sandbox Code Playgroud)
结果是:
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
Run Code Online (Sandbox Code Playgroud)