【问题标题】:How to get BIC/AIC plot for selecting number of Principal Components in Python or R如何获得用于在 Python 或 R 中选择主成分数量的 BIC/AIC 图
【发布时间】:2019-03-10 18:33:52
【问题描述】:

我想得到一个像这样的图来选择 PCA 中的组件数量:

然而,我一直在尝试手动编码 BIC/AIC。 R 或 Python 中是否有任何软件包可以帮助我获得这个?任何示例代码都会有很大帮助。

谢谢

【问题讨论】:

    标签: python r pca


    【解决方案1】:

    这里是a link 一些计算 AIC 和 BIC 以及向前/向后/逐步变量选择的示例 R 代码。所有功劳归功于乔哈丁。为方便起见,我将复制下面的部分代码,对格式稍作编辑:

    > sat.data <- read.table("sat.csv", header=T, sep=",")
    > attach(sat.data)
    > sat.n <- nrow(sat.data) # be careful with missing values!!
    > ltakers <- log(takers) # variable is quite right skewed
    

    R中的AIC和BIC

    方法一:

    > sat.lm0 <- lm(sat ~ 1)
    > summary(sat.lm0)
    
    Coefficients:
    Estimate Std. Error t value Pr(>|t|)
    (Intercept) 948.45 10.21 92.86 <2e-16 ***
    ---
    Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
    
    Residual standard error: 71.5 on 48 degrees of freedom
    
    > sat.sse0 <- sum(resid(sat.lm0) ^2)
    > sat.n + sat.n*log(2*pi) + sat.n * log(sat.sse0 / sat.n) + 2 * (1+1)
    [1] 560.4736
    > AIC(sat.lm0, k=2)
    [1] 560.4736
    > sat.n + sat.n * log(2*pi) + sat.n*log(sat.sse0/sat.n) + log(sat.n)*(1+1)
    [1] 564.2573
    > AIC(sat.lm0, k=log(sat.n))
    [1] 564.2573
    

    方法二:

    > sat.lm1 <- lm(sat ~ ltakers)
    > summary(sat.lm1)
    
    Coefficients:
    Estimate Std. Error t value Pr(>|t|)
    (Intercept) 1112.408 12.386 89.81 <2e-16 ***
    ltakers -59.175 4.167 -14.20 <2e-16 ***
    ---
    Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
    
    Residual standard error: 31.41 on 47 degrees of freedom
    Multiple R-squared: 0.811, Adjusted R-squared: 0.807
    F-statistic: 201.7 on 1 and 47 DF, p-value: < 2.2e-16
    
    > sat.sse1 <- sum(resid(sat.lm1) ^2)
    > sat.n + sat.n*log(2*pi) + sat.n * log(sat.sse1 / sat.n) + 2 * (2+1)
    [1] 480.832
    > AIC(sat.lm1, k=2)
    [1] 480.832
    > sat.n + sat.n * log(2*pi) + sat.n*log(sat.sse1/sat.n) + log(sat.n) * (2+1)
    [1] 486.5075
    > AIC(sat.lm1, k=log(sat.n))
    [1] 486.5075
    

    【讨论】:

      猜你喜欢
      • 2015-10-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 2021-08-28
      • 2016-11-15
      • 2018-02-21
      • 2017-06-22
      • 2018-02-09
      相关资源
      最近更新 更多