我希望能够通过提供相关或协方差矩阵而不是 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)
- R 中的什么函数允许您基于相关或协方差矩阵运行回归?理想情况下它应该类似于
lm
这样你就可以轻松获得诸如r平方、调整后的r平方、预测值等。据推测,对于其中一些事情,您还需要提供样本大小以及可能的均值向量。但那样也好。
即,类似:
lm(EngineSize ~ Horsepower + RPM, cov = covx) # obviously this doesn't work
请注意,这个答案Stats.SE https://stats.stackexchange.com/questions/107597/is-there-a-way-to-use-the-covariance-matrix-to-find-coefficients-for-multiple-re提供了为什么它是可能的理论解释,并提供了一些用于计算系数的自定义 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)