由于某些原因,在R中运行lm回归给了我不同的输出。这是一个简单的lm,不涉及随机性。因为我只在我的计算机中得到了这个奇怪的结果(代码在其他计算机上给出了相同的结果),所以我没有在这里附加数据,而是附加了输出。
有人有建议吗?谢谢!
d = read.csv("d.csv")
str(d)
## 'data.frame': 5000 obs. of 2 variables:
## $ elevation_sd: num -0.6123 1.3988 -0.111 -0.0763 0.4129 ...
## $ pred_rich : num 6.74 10.35 10.81 15.24 37.58 ...
coef(lm(pred_rich ~ elevation_sd + I(elevation_sd^2), data = d))
## (Intercept) elevation_sd I(elevation_sd^2)
## 31.40967132 -14.51366622 -0.04686489
coef(lm(pred_rich ~ elevation_sd + I(elevation_sd^2), data = d))
## (Intercept) elevation_sd I(elevation_sd^2)
## 24.791451 -22.377711 2.530645
coef(lm(pred_rich ~ elevation_sd + I(elevation_sd^2), data = d))
## (Intercept) elevation_sd I(elevation_sd^2)
## 29.009348 -24.539297 2.184579
coef(lm(pred_rich ~ elevation_sd + I(elevation_sd^2), data = d))
## (Intercept) elevation_sd I(elevation_sd^2)
## 17.615122 -36.893819 5.300316
coef(lm(pred_rich ~ elevation_sd + I(elevation_sd^2), data = d))
## (Intercept) elevation_sd I(elevation_sd^2)
## 17.292353 -37.052702 5.461568## R version 4.2.1 (2022-06-23)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.4 LTS
##
## Matrix products: default
## BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/libmkl_rt.so
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.29 R6_2.5.1 jsonlite_1.8.0 magrittr_2.0.3
## [5] evaluate_0.15 stringi_1.7.8 cachem_1.0.6 rlang_1.0.4
## [9] cli_3.3.0 rstudioapi_0.13 jquerylib_0.1.4 bslib_0.4.0
## [13] rmarkdown_2.14 tools_4.2.1 stringr_1.4.0 xfun_0.31
## [17] yaml_2.3.5 fastmap_1.1.0 compiler_4.2.1 htmltools_0.5.3
## [21] knitr_1.39 sass_0.4.2发布于 2022-08-23 02:25:28
我通过改变我的BLAS/LAPACK解决了这个问题。
sudo update-alternatives --config libblas.so.3-x86_64-linux-gnu
sudo update-alternatives --config liblapack.so.3-x86_64-linux-gnu我选择了OpenBLAS,然后重新启动R,没有问题了!我也尝试过默认的BLAS/LAPACK和AtlasBLAS,两者都能工作!
所以,问题是来自英特尔MLK库!谢谢你的提示。
发布于 2022-08-22 21:53:01
正如我在评论中提到的,这至多是一件轶事,很可能是在浪费你和我们的时间。没有一个可重复的例子,我们就不能做任何有意义的事情。
但我们可以嘲笑这个。在这里,我做了一个随机抽签,也使用N = 5000,在您的情况下,并运行回归五次。不用说,即使这两个向量没有关联,通过设计,纯数值确定的系数也是,当然,是相同的。
> set.seed(123)
> x <- rnorm(5000); y <- rnorm(5000) # your dimensions
> replicate(5, lm(y ~ x + I(x^2))$coef)
[,1] [,2] [,3] [,4] [,5]
(Intercept) -0.01371532 -0.01371532 -0.01371532 -0.01371532 -0.01371532
x -0.00613063 -0.00613063 -0.00613063 -0.00613063 -0.00613063
I(x^2) 0.00964436 0.00964436 0.00964436 0.00964436 0.00964436
> 现在,这三行代码是可复制的,因此我请您在您的系统上运行此代码。
编辑:我的sessionInfo(),也在Ubuntu上,但是22.04,从BLAS和LAPACK的两行开始。你只有一个看上去不对的。
> sessionInfo()
R version 4.2.1 (2022-06-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04.1 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0发布于 2022-08-22 22:03:38
下面是我通过运行Dirk的代码得到的结果:
[,1] [,2] [,3] [,4] [,5]
(Intercept) 0.01103854 0.01819024 -0.010350210 0.01828507 0.02242858
x -0.02816530 -0.05002762 -0.027738397 -0.02812795 -0.02775974
I(x^2) -0.01918489 -0.01735535 -0.005590314 -0.01720919 -0.01929609为了使输出更加不同:
set.seed(123)
x <- rnorm(5000)
y <- x + x^2 + rnorm(5000)
replicate(5, lm(y ~ x + I(x^2))$coef) [,1] [,2] [,3] [,4] [,5]
(Intercept) -1.643336 -3.908215 -1.979385 -3.707418 -1.845149
x 2.033474 2.001891 2.019949 2.007776 2.045030
I(x^2) 1.834672 1.977397 1.995412 2.867048 1.936577第四次复制有很大的不同。
下面的输出来自我的另一台膝上型计算机(按预期工作):
(Intercept) -0.01371532 -0.01371532 -0.01371532 -0.01371532 -0.01371532
x 0.99386937 0.99386937 0.99386937 0.99386937 0.99386937
I(x^2) 1.00964436 1.00964436 1.00964436 1.00964436 1.00964436https://stackoverflow.com/questions/73451244
复制相似问题