【问题标题】:Calculating Variance Inflation Factors (VIFs) based on object type in R根据 R 中的对象类型计算方差膨胀因子 (VIF)
【发布时间】:2017-02-17 16:23:10
【问题描述】:

在 R 中似乎有两种流行的计算 VIF(方差膨胀因子,用于检测回归变量之间的共线性)的方法:

  1. car 包中的vif() 函数,其中输入是模型。这要求您首先拟合模型,然后才能检查模型中变量之间的 VIF。

  2. corvif() 函数,其中输入是实际的候选解释变量(即在模型拟合之前的变量列表)。此功能是 AED 包 (Zuur et al. 2009) 的一部分,该包已停产。这似乎只适用于变量列表,而不适用于拟合回归模型。

这是一个数据示例:

MyData<-structure(list(site = structure(c(3L, 1L, 5L, 1L, 2L, 3L, 2L, 
4L, 1L, 2L, 2L, 3L, 4L, 3L, 2L, 2L, 4L, 1L, 1L, 3L, 3L, 1L, 4L, 
3L, 1L, 3L, 4L, 5L, 1L, 3L, 1L, 2L, 4L, 2L, 1L, 1L, 5L, 3L, 1L, 
3L, 4L, 3L, 1L, 4L, 4L, 2L, 5L, 2L, 1L, 4L, 1L, 1L, 1L, 4L, 4L, 
3L, 5L, 3L, 1L, 3L, 1L, 1L, 3L, 1L, 4L, 5L, 1L, 5L, 1L, 4L, 1L, 
4L, 1L, 2L, 5L, 2L, 3L, 1L, 5L, 4L, 1L, 1L, 3L, 2L, 1L, 3L, 5L, 
3L, 3L, 5L, 2L, 1L, 3L, 5L, 4L, 5L, 5L, 1L, 3L, 2L, 5L, 4L, 3L, 
3L, 2L, 5L, 2L, 1L, 1L, 3L, 3L, 5L, 5L, 5L, 3L, 1L, 1L, 5L, 5L, 
5L, 2L, 3L, 5L, 1L, 3L, 3L, 4L, 4L, 4L, 5L, 2L, 3L, 1L, 4L, 2L, 
4L, 3L, 4L, 3L, 3L, 4L, 1L, 3L, 4L, 1L, 4L, 4L, 5L, 4L, 4L, 1L, 
4L, 1L, 2L, 1L, 2L, 4L, 2L, 4L, 3L, 5L, 1L, 2L, 3L, 1L, 1L, 4L, 
3L, 1L, 1L, 1L, 4L, 3L, 5L, 4L, 2L, 1L, 4L, 1L, 2L, 1L, 1L, 5L, 
1L, 5L, 3L, 1L, 5L, 3L, 5L, 3L, 5L, 3L, 1L, 5L, 1L, 1L, 1L, 3L, 
1L, 4L, 4L, 2L, 5L, 4L, 1L, 3L, 2L, 4L, 5L, 4L, 5L, 5L, 3L, 2L, 
2L, 4L, 2L, 5L, 4L, 1L, 5L, 5L, 4L, 4L, 3L, 1L, 3L, 4L, 4L, 1L, 
1L, 1L, 3L, 3L, 1L, 1L, 3L, 4L, 4L, 1L, 5L, 3L, 5L, 5L, 3L, 5L, 
5L, 1L, 4L, 3L, 1L, 1L, 1L, 1L, 2L, 3L, 1L, 4L, 3L, 3L, 4L, 3L, 
4L, 3L, 3L, 4L, 1L, 5L, 4L, 3L, 1L, 2L, 2L, 5L, 1L, 3L, 3L, 4L, 
1L, 4L, 3L, 1L, 2L, 5L, 5L, 4L, 1L, 3L, 4L, 4L, 3L, 5L, 4L, 5L, 
2L, 5L, 4L, 2L, 5L, 1L, 2L, 4L, 1L, 5L, 3L, 5L, 4L, 1L, 4L, 4L, 
2L, 3L, 5L, 4L, 3L, 4L, 2L, 1L, 1L, 5L, 3L, 3L, 1L, 3L, 1L, 3L, 
3L, 5L, 2L, 4L, 3L, 1L, 1L, 4L, 4L, 3L, 3L, 3L, 4L, 5L, 1L, 5L, 
3L, 3L, 1L, 1L, 3L, 2L, 5L, 1L, 3L, 1L, 5L, 3L, 4L, 4L, 2L, 1L, 
2L, 4L, 1L, 4L, 4L, 3L, 3L, 5L, 3L, 2L, 2L, 4L, 2L, 1L, 1L, 3L, 
3L, 4L, 3L, 1L, 4L, 2L, 1L, 2L, 4L, 3L, 4L, 1L, 1L, 4L, 4L, 3L, 
5L, 1L), .Label = c("R1a", "R1b", "R2", "Za", "Zb"), class = "factor"), 
    species = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    3L, 4L, 3L, 1L, 4L, 3L, 4L, 1L, 4L, 3L, 3L, 4L, 1L, 1L, 1L, 
    2L, 4L, 1L, 2L, 1L, 3L, 1L, 4L, 3L, 3L, 2L, 2L, 4L, 1L, 1L, 
    3L, 2L, 4L, 3L, 3L, 1L, 3L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 3L, 4L, 3L, 3L, 3L, 1L, 1L, 1L, 3L, 1L, 1L, 
    1L, 3L, 1L, 1L, 3L, 2L, 3L, 3L, 2L, 1L, 1L, 1L, 3L, 3L, 3L, 
    1L, 3L, 2L, 1L, 3L, 1L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 3L, 3L, 
    3L, 1L, 1L, 3L, 3L, 3L, 1L, 1L, 1L, 3L, 1L, 1L, 4L, 1L, 1L, 
    1L, 4L, 1L, 1L, 4L, 1L, 1L, 4L, 1L, 1L, 1L, 3L, 3L, 1L, 1L, 
    1L, 4L, 1L, 1L, 1L, 1L, 4L, 3L, 2L, 1L, 3L, 1L, 4L, 4L, 1L, 
    1L, 1L, 1L, 1L, 3L, 1L, 3L, 1L, 1L, 3L, 1L, 3L, 1L, 1L, 3L, 
    3L, 1L, 4L, 1L, 3L, 3L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 3L, 1L, 
    1L, 3L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 3L, 4L, 3L, 3L, 1L, 1L, 
    1L, 4L, 1L, 3L, 4L, 1L, 3L, 4L, 3L, 3L, 3L, 3L, 1L, 3L, 2L, 
    3L, 3L, 4L, 3L, 1L, 2L, 1L, 1L, 2L, 3L, 4L, 3L, 1L, 1L, 4L, 
    1L, 1L, 1L, 4L, 1L, 2L, 1L, 1L, 3L, 4L, 4L, 1L, 3L, 1L, 3L, 
    3L, 1L, 3L, 3L, 3L, 1L, 3L, 1L, 3L, 1L, 2L, 3L, 2L, 2L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 3L, 4L, 1L, 1L, 3L, 1L, 1L, 4L, 1L, 
    3L, 3L, 1L, 1L, 1L, 1L, 3L, 1L, 3L, 3L, 2L, 3L, 1L, 3L, 1L, 
    1L, 1L, 3L, 1L, 3L, 1L, 1L, 1L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 
    1L, 4L, 1L, 3L, 3L, 1L, 1L, 3L, 1L, 3L, 2L, 4L, 1L, 1L, 4L, 
    1L, 1L, 3L, 4L, 1L, 1L, 4L, 2L, 3L, 3L, 1L, 1L, 1L, 3L, 1L, 
    3L, 1L, 3L, 4L, 4L, 1L, 3L, 1L, 3L, 1L, 4L, 1L, 1L, 1L, 4L, 
    1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 4L, 2L, 3L, 3L, 3L, 1L, 
    3L, 1L, 1L, 4L, 2L, 3L, 1L, 4L, 1L, 1L, 3L, 1L, 4L, 1L, 1L, 
    3L, 1L, 3L, 1L, 1L, 3L, 3L, 1L, 3L, 3L, 1L, 3L, 1L, 1L, 1L, 
    4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Monogyna", 
    "Other", "Prunus", "Rosa"), class = "factor"), aspect = structure(c(4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 
    3L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 2L, 3L, 4L, 4L, 4L, 4L, 
    4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 2L, 4L, 3L, 3L, 4L, 
    4L, 4L, 4L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 4L, 
    4L, 2L, 4L, 1L, 1L, 4L, 4L, 4L, 3L, 4L, 3L, 4L, 4L, 4L, 4L, 
    2L, 4L, 1L, 3L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 1L, 4L, 1L, 4L, 
    4L, 4L, 1L, 3L, 3L, 1L, 4L, 3L, 4L, 4L, 3L, 4L, 5L, 4L, 4L, 
    4L, 4L, 4L, 3L, 2L, 4L, 2L, 1L, 2L, 4L, 4L, 4L, 4L, 1L, 4L, 
    4L, 1L, 4L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 2L, 4L, 3L, 4L, 3L, 
    5L, 3L, 2L, 4L, 3L, 4L, 4L, 3L, 4L, 3L, 3L, 4L, 3L, 3L, 4L, 
    3L, 4L, 4L, 4L, 4L, 3L, 4L, 3L, 4L, 1L, 4L, 4L, 4L, 4L, 4L, 
    3L, 3L, 4L, 4L, 4L, 3L, 5L, 4L, 3L, 4L, 4L, 3L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 3L, 4L, 3L, 4L, 1L, 4L, 4L, 3L, 4L, 4L, 4L, 
    4L, 4L, 3L, 4L, 3L, 3L, 4L, 4L, 3L, 4L, 3L, 4L, 3L, 4L, 3L, 
    4L, 4L, 2L, 4L, 4L, 3L, 4L, 1L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 
    4L, 3L, 3L, 3L, 4L, 4L, 4L, 2L, 5L, 4L, 4L, 3L, 3L, 3L, 4L, 
    4L, 4L, 1L, 4L, 4L, 1L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 3L, 4L, 4L, 3L, 2L, 
    4L, 4L, 4L, 1L, 4L, 3L, 3L, 3L, 4L, 3L, 2L, 4L, 4L, 4L, 4L, 
    3L, 4L, 4L, 3L, 3L, 1L, 4L, 3L, 1L, 4L, 4L, 3L, 4L, 4L, 4L, 
    4L, 3L, 4L, 1L, 4L, 1L, 3L, 4L, 3L, 3L, 4L, 2L, 4L, 3L, 4L, 
    3L, 4L, 4L, 4L, 4L, 4L, 3L, 4L, 4L, 4L, 2L, 3L, 4L, 4L, 3L, 
    2L, 4L, 4L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 4L, 1L, 4L, 2L, 4L, 
    4L, 4L, 4L, 1L, 4L, 5L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 4L, 3L, 
    4L, 3L, 3L, 3L, 4L, 3L, 2L, 4L, 4L, 3L, 4L, 4L, 4L, 5L, 1L, 
    3L, 2L, 4L, 3L, 4L, 4L, 4L, 3L, 4L, 3L, 4L, 4L, 3L, 3L, 4L, 
    4L, 4L), .Label = c("East", "Flat", "North", "South", "West"
    ), class = "factor"), height = c(515L, 60L, 60L, 30L, 70L, 
    70L, 40L, 70L, 50L, 75L, 160L, 85L, 40L, 90L, 70L, 210L, 
    30L, 60L, 45L, 60L, 410L, 50L, 40L, 210L, 140L, 120L, 70L, 
    35L, 30L, 90L, 40L, 240L, 40L, 55L, 120L, 200L, 65L, 40L, 
    95L, 140L, 220L, 70L, 40L, 30L, 50L, 95L, 50L, 50L, 50L, 
    70L, 160L, 45L, 35L, 50L, 70L, 230L, 110L, 300L, 50L, 105L, 
    60L, 50L, 60L, 70L, 30L, 60L, 30L, 110L, 80L, 80L, 30L, 60L, 
    70L, 80L, 60L, 40L, 220L, 140L, 110L, 40L, 40L, 40L, 90L, 
    125L, 90L, 100L, 270L, 420L, 60L, 70L, 53L, 40L, 80L, 90L, 
    30L, 40L, 65L, 40L, 110L, 90L, 40L, 190L, 110L, 70L, 52L, 
    120L, 95L, 50L, 50L, 140L, 75L, 30L, 50L, 60L, 125L, 60L, 
    80L, 35L, 55L, 140L, 140L, 240L, 65L, 40L, 200L, 80L, 60L, 
    65L, 120L, 80L, 230L, 150L, 40L, 50L, 60L, 210L, 50L, 130L, 
    140L, 210L, 60L, 50L, 90L, 120L, 55L, 50L, 20L, 50L, 40L, 
    70L, 40L, 100L, 80L, 85L, 60L, 50L, 20L, 200L, 40L, 70L, 
    50L, 200L, 60L, 43L, 30L, 60L, 40L, 70L, 40L, 40L, 40L, 50L, 
    110L, 70L, 30L, 50L, 85L, 70L, 40L, 100L, 40L, 50L, 100L, 
    40L, 70L, 40L, 40L, 50L, 210L, 50L, 140L, 80L, 75L, 90L, 
    40L, 50L, 60L, 50L, 80L, 50L, 60L, 40L, 60L, 170L, 60L, 80L, 
    80L, 15L, 40L, 70L, 45L, 45L, 45L, 110L, 200L, 30L, 60L, 
    40L, 60L, 160L, 40L, 90L, 80L, 30L, 40L, 270L, 50L, 50L, 
    60L, 60L, 50L, 30L, 70L, 170L, 50L, 30L, 50L, 60L, 40L, 60L, 
    60L, 140L, 80L, 80L, 220L, 45L, 80L, 130L, 50L, 40L, 220L, 
    40L, 70L, 60L, 80L, 50L, 200L, 115L, 50L, 90L, 400L, 50L, 
    360L, 40L, 60L, 60L, 65L, 100L, 50L, 55L, 60L, 50L, 130L, 
    40L, 130L, 40L, 40L, 120L, 66L, 55L, 100L, 75L, 60L, 80L, 
    60L, 90L, 160L, 50L, 210L, 35L, 60L, 40L, 55L, 50L, 90L, 
    220L, 60L, 120L, 62L, 60L, 40L, 60L, 70L, 60L, 90L, 50L, 
    50L, 30L, 110L, 70L, 80L, 90L, 210L, 70L, 65L, 160L, 100L, 
    25L, 55L, 40L, 60L, 110L, 70L, 50L, 60L, 70L, 60L, 60L, 170L, 
    45L, 60L, 120L, 40L, 60L, 130L, 40L, 170L, 50L, 80L, 60L, 
    150L, 90L, 60L, 120L, 120L, 80L, 30L, 110L, 230L, 190L, 70L, 
    110L, 50L, 60L, 82L, 60L, 30L, 60L, 200L, 90L, 30L, 140L, 
    60L, 70L, 70L, 100L, 60L, 415L, 115L, 90L, 60L, 60L, 80L, 
    60L, 55L, 90L, 65L, 60L, 40L, 40L, 90L, 50L, 70L, 70L, 120L, 
    40L, 50L, 110L, 45L, 30L, 95L, 30L, 70L), width = c(310L, 
    50L, 40L, 30L, 60L, 70L, 20L, 80L, 70L, 20L, 220L, 40L, 60L, 
    30L, 230L, 110L, 20L, 40L, 25L, 60L, 240L, 90L, 30L, 130L, 
    120L, 110L, 60L, 70L, 30L, 110L, 30L, 180L, 20L, 80L, 110L, 
    310L, 40L, 10L, 80L, 160L, 134L, 30L, 20L, 40L, 20L, 230L, 
    100L, 180L, 40L, 120L, 130L, 30L, 40L, 100L, 30L, 180L, 70L, 
    110L, 170L, 40L, 30L, 50L, 30L, 40L, 30L, 50L, 80L, 50L, 
    80L, 90L, 70L, 70L, 190L, 60L, 50L, 30L, 150L, 150L, 50L, 
    80L, 30L, 40L, 130L, 390L, 60L, 130L, 400L, 200L, 110L, 30L, 
    15L, 300L, 70L, 140L, 30L, 50L, 30L, 40L, 110L, 240L, 50L, 
    90L, 70L, 20L, 40L, 100L, 50L, 30L, 30L, 130L, 40L, 70L, 
    70L, 60L, 10L, 30L, 60L, 50L, 40L, 120L, 90L, 210L, 50L, 
    20L, 100L, 100L, 110L, 100L, 100L, 80L, 120L, 80L, 5L, 40L, 
    50L, 60L, 15L, 100L, 120L, 200L, 30L, 80L, 60L, 70L, 30L, 
    30L, 20L, 50L, 50L, 60L, 15L, 80L, 60L, 130L, 40L, 60L, 30L, 
    100L, 20L, 130L, 60L, 120L, 70L, 20L, 60L, 20L, 40L, 50L, 
    15L, 120L, 60L, 50L, 300L, 40L, 30L, 25L, 70L, 130L, 30L, 
    50L, 60L, 50L, 50L, 50L, 20L, 30L, 70L, 35L, 180L, 40L, 50L, 
    70L, 40L, 70L, 50L, 20L, 40L, 40L, 40L, 40L, 50L, 20L, 30L, 
    180L, 30L, 130L, 30L, 15L, 25L, 50L, 40L, 40L, 40L, 50L, 
    170L, 20L, 50L, 20L, 50L, 110L, 30L, 90L, 15L, 50L, 40L, 
    150L, 30L, 30L, 30L, 20L, 40L, 20L, 100L, 60L, 40L, 30L, 
    30L, 140L, 40L, 50L, 120L, 150L, 100L, 70L, 300L, 30L, 60L, 
    120L, 30L, 50L, 100L, 60L, 90L, 50L, 40L, 140L, 130L, 60L, 
    60L, 70L, 200L, 30L, 40L, 50L, 20L, 20L, 20L, 80L, 35L, 70L, 
    15L, 40L, 360L, 70L, 50L, 50L, 30L, 110L, 30L, 30L, 90L, 
    50L, 30L, 70L, 40L, 110L, 70L, 40L, 150L, 100L, 40L, 40L, 
    40L, 20L, 250L, 180L, 40L, 60L, 20L, 120L, 40L, 50L, 60L, 
    260L, 110L, 30L, 30L, 40L, 100L, 50L, 50L, 100L, 150L, 190L, 
    70L, 110L, 50L, 10L, 40L, 50L, 60L, 80L, 30L, 20L, 150L, 
    70L, 25L, 30L, 40L, 50L, 30L, 50L, 210L, 40L, 100L, 30L, 
    80L, 20L, 30L, 70L, 130L, 60L, 50L, 50L, 70L, 50L, 30L, 150L, 
    130L, 110L, 50L, 40L, 80L, 90L, 40L, 40L, 40L, 40L, 200L, 
    140L, 40L, 25L, 50L, 50L, 40L, 20L, 40L, 340L, 70L, 60L, 
    50L, 20L, 80L, 60L, 25L, 260L, 20L, 15L, 40L, 30L, 300L, 
    120L, 60L, 100L, 50L, 40L, 20L, 90L, 50L, 40L, 80L, 30L, 
    40L), length = c(450L, 80L, 55L, 50L, 90L, 90L, 30L, 90L, 
    90L, 30L, 240L, 50L, 70L, 40L, 380L, 200L, 40L, 40L, 35L, 
    110L, 250L, 120L, 70L, 150L, 130L, 140L, 90L, 90L, 40L, 390L, 
    40L, 190L, 40L, 110L, 140L, 360L, 50L, 30L, 130L, 500L, 200L, 
    30L, 25L, 60L, 30L, 350L, 110L, 180L, 70L, 180L, 200L, 40L, 
    70L, 110L, 70L, 180L, 90L, 150L, 400L, 100L, 60L, 70L, 70L, 
    60L, 30L, 50L, 80L, 180L, 110L, 100L, 110L, 110L, 210L, 80L, 
    70L, 40L, 500L, 210L, 50L, 80L, 40L, 50L, 350L, 400L, 150L, 
    200L, 400L, 280L, 240L, 40L, 50L, 360L, 140L, 140L, 50L, 
    50L, 40L, 50L, 210L, 370L, 70L, 110L, 80L, 50L, 50L, 100L, 
    80L, 50L, 35L, 140L, 60L, 90L, 110L, 60L, 130L, 180L, 70L, 
    70L, 40L, 230L, 130L, 290L, 90L, 40L, 100L, 100L, 120L, 150L, 
    110L, 80L, 220L, 90L, 5L, 50L, 50L, 60L, 30L, 150L, 120L, 
    200L, 60L, 170L, 80L, 90L, 40L, 50L, 70L, 50L, 60L, 100L, 
    15L, 90L, 70L, 150L, 60L, 90L, 50L, 120L, 20L, 220L, 80L, 
    140L, 120L, 30L, 60L, 40L, 40L, 70L, 30L, 180L, 60L, 110L, 
    300L, 50L, 60L, 50L, 110L, 160L, 40L, 70L, 70L, 60L, 70L, 
    50L, 25L, 30L, 215L, 70L, 220L, 70L, 80L, 90L, 60L, 130L, 
    60L, 20L, 60L, 50L, 40L, 60L, 100L, 40L, 70L, 210L, 40L, 
    500L, 40L, 30L, 50L, 80L, 40L, 60L, 80L, 50L, 220L, 20L, 
    70L, 50L, 50L, 180L, 50L, 90L, 15L, 120L, 80L, 170L, 30L, 
    30L, 60L, 20L, 60L, 30L, 140L, 80L, 40L, 50L, 40L, 200L, 
    80L, 80L, 120L, 160L, 210L, 120L, 400L, 60L, 60L, 180L, 70L, 
    70L, 150L, 70L, 110L, 70L, 80L, 250L, 140L, 90L, 60L, 180L, 
    400L, 60L, 50L, 60L, 40L, 30L, 50L, 100L, 40L, 110L, 30L, 
    80L, 400L, 70L, 50L, 80L, 30L, 180L, 70L, 60L, 100L, 70L, 
    50L, 100L, 60L, 220L, 70L, 70L, 200L, 110L, 50L, 110L, 50L, 
    60L, 250L, 220L, 60L, 80L, 35L, 210L, 70L, 70L, 110L, 320L, 
    280L, 60L, 50L, 60L, 100L, 70L, 70L, 170L, 170L, 230L, 80L, 
    130L, 90L, 10L, 60L, 70L, 60L, 120L, 40L, 50L, 160L, 100L, 
    30L, 40L, 40L, 90L, 30L, 80L, 240L, 100L, 170L, 60L, 120L, 
    20L, 40L, 70L, 150L, 80L, 50L, 90L, 130L, 70L, 60L, 480L, 
    150L, 130L, 90L, 70L, 150L, 100L, 70L, 50L, 40L, 60L, 400L, 
    200L, 80L, 30L, 120L, 70L, 50L, 40L, 40L, 360L, 90L, 70L, 
    60L, 40L, 110L, 80L, 25L, 270L, 40L, 25L, 50L, 30L, 320L, 
    150L, 100L, 100L, 60L, 40L, 50L, 100L, 50L, 50L, 200L, 30L, 
    80L), ground = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 
    1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 3L, 1L, 
    2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 
    2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 3L, 
    1L, 2L, 1L, 2L, 1L, 1L, 3L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 
    1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 
    1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 3L, 2L, 
    2L, 1L, 1L, 1L, 2L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
    2L, 3L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 
    2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 
    2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 1L, 
    2L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 
    1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
    2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 
    1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 3L, 1L, 3L, 2L, 
    1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 
    1L, 1L, 1L, 2L, 1L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 1L, 1L, 1L, 2L, 3L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L, 1L, 3L, 1L, 1L, 2L, 1L, 2L, 1L, 3L, 2L, 
    2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 3L, 1L, 1L, 1L, 2L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 
    1L, 2L, 3L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 
    2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 
    1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 
    1L, 1L, 2L, 1L, 1L, 3L, 2L, 1L, 3L, 1L), .Label = c("Grass", 
    "GrassRock", "Rock"), class = "factor"), sun = structure(c(3L, 
    1L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 
    3L, 3L, 3L, 1L, 3L, 3L, 3L, 1L, 3L, 3L, 1L, 2L, 3L, 1L, 1L, 
    1L, 3L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 
    3L, 1L, 3L, 3L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 
    3L, 3L, 1L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 1L, 1L, 3L, 1L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 3L, 1L, 1L, 3L, 3L, 
    3L, 1L, 1L, 3L, 2L, 1L, 3L, 1L, 3L, 2L, 1L, 1L, 3L, 3L, 1L, 
    3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 
    3L, 1L, 3L, 1L, 1L, 3L, 3L, 3L, 2L, 1L, 3L, 3L, 1L, 3L, 3L, 
    1L, 3L, 2L, 1L, 3L, 3L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 3L, 3L, 
    3L, 1L, 1L, 3L, 3L, 3L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 3L, 1L, 
    1L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 1L, 1L, 3L, 3L, 1L, 1L, 
    1L, 3L, 1L, 1L, 1L, 3L, 1L, 1L, 3L, 1L, 2L, 1L, 3L, 1L, 3L, 
    3L, 3L, 1L, 1L, 3L, 3L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 
    3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 3L, 
    3L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 3L, 1L, 3L, 3L, 1L, 2L, 1L, 
    1L, 1L, 3L, 3L, 1L, 3L, 1L, 3L, 3L, 3L, 2L, 3L, 3L, 3L, 3L, 
    3L, 1L, 3L, 3L, 3L, 1L, 1L, 1L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 1L, 3L, 3L, 1L, 1L, 3L, 1L, 1L, 2L, 3L, 3L, 1L, 3L, 
    1L, 1L, 1L, 3L, 1L, 1L, 3L, 3L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 
    3L, 1L, 3L, 3L, 2L, 1L, 1L, 3L, 2L, 1L, 3L, 3L, 3L, 1L, 3L, 
    3L, 3L, 1L, 3L, 1L, 3L, 3L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 
    1L, 3L, 1L, 3L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 3L, 3L, 
    1L, 1L, 3L, 3L, 3L, 3L, 3L, 2L, 1L, 3L, 1L, 1L, 3L, 3L, 1L, 
    3L, 3L, 3L, 3L, 1L, 3L, 3L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 1L, 
    3L, 1L), .Label = c("Half", "Shade", "Sun"), class = "factor"), 
    leaf = structure(c(2L, 2L, 4L, 2L, 2L, 4L, 2L, 2L, 4L, 2L, 
    2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 4L, 2L, 1L, 2L, 1L, 3L, 1L, 1L, 1L, 4L, 4L, 4L, 1L, 
    1L, 4L, 4L, 2L, 2L, 2L, 2L, 2L, 4L, 1L, 1L, 2L, 4L, 2L, 2L, 
    2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 2L, 4L, 2L, 2L, 
    2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 4L, 4L, 2L, 2L, 1L, 2L, 2L, 
    1L, 1L, 2L, 2L, 4L, 2L, 2L, 1L, 2L, 4L, 4L, 4L, 2L, 1L, 2L, 
    2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 4L, 1L, 2L, 2L, 
    2L, 2L, 4L, 2L, 1L, 4L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 4L, 1L, 2L, 2L, 1L, 2L, 2L, 
    2L, 2L, 4L, 4L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 4L, 2L, 2L, 1L, 
    2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 1L, 2L, 4L, 2L, 
    2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 4L, 
    2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 1L, 1L, 2L, 
    2L, 4L, 2L, 4L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 4L, 2L, 4L, 1L, 
    2L, 4L, 4L, 4L, 2L, 2L, 2L, 4L, 1L, 2L, 4L, 4L, 2L, 1L, 2L, 
    4L, 4L, 1L, 4L, 2L, 2L, 2L, 2L, 4L, 1L, 2L, 1L, 1L, 2L, 2L, 
    2L, 4L, 2L, 2L, 4L, 2L, 1L, 2L, 2L, 2L, 2L, 4L, 2L, 4L, 2L, 
    2L, 2L, 1L, 4L, 4L, 4L, 2L, 2L, 2L, 1L, 4L, 4L, 2L, 2L, 2L, 
    4L, 1L, 2L, 4L, 2L, 1L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 2L, 2L, 
    2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 4L, 2L, 2L, 2L, 
    2L, 1L, 2L, 1L, 4L, 2L, 1L, 2L, 4L, 4L, 4L, 4L, 2L, 2L, 2L, 
    2L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 4L, 2L, 4L, 
    1L, 2L, 4L, 2L, 2L, 2L, 4L, 1L, 2L, 1L, 2L, 2L, 2L, 4L, 1L, 
    2L, 2L, 2L, 1L, 2L, 4L, 2L, 2L, 2L, 1L, 4L, 4L, 2L, 2L, 2L, 
    4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 2L, 2L, 2L, 
    2L, 2L, 4L, 4L, 4L, 2L, 4L, 2L), .Label = c("Large", "Medium", 
    "Scarce", "Small"), class = "factor"), Presence = c(0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 
    0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
    1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 
    0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
    0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
    1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 
    0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
    1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
    0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
    1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 
    0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 
    1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 
    0L)), .Names = c("site", "species", "aspect", "height", "width", 
"length", "ground", "sun", "leaf", "Presence"), row.names = c(NA, 
393L), class = "data.frame")

模型选择后,这是最优模型:

model <- glm(Presence ~ site + species + aspect + length + sun 
            + leaf, data=MyData, family=binomial)

关于上面提到的第一种方式,可以做到以下几点:

library(car)
vif(model)

根据模型作为输入获得 VIF。

但是对于第二种方式,可以在拟合模型之前查看变量的 VIF:

library(AED) # note that his package has been discontinued
vars <- cbind(MyData$site, MyData$species,
MyData$aspect , MyData$length ,
MyData$width, MyData$height,
MyData$ground, MyData$sun, MyData$leaf)
corvif(vars)

corvif()功能代码可以在这里找到:http://www.highstat.com/Book2/HighstatLibV6.R

这两个函数的基础数学看起来是相同的,但是函数的编写方式,它们接受不同类型的对象作为输入。

我的问题是:

  1. 您是否更喜欢基于 VIF 计算

    1. 在模型拟合之前的变量列表中,
    2. 在拟合模型上,或
    3. 两者都有?
  2. 是否有人们推荐和/或用于计算 VIF 的函数(除了已经提到的两个函数)?

  3. 有没有人知道一个 R 函数可以同时作用于变量列表作为输入的拟合模型?

【问题讨论】:

  • 这样的问题(请求包名)被认为是题外话。 (这个问题也表明没有努力搜索。)“实际协变量”的含义也不清楚。怎么会有非实际的协变量?
  • @42-,抱歉,我不知道这是题外话。我认为正是这个社区最适合提出这样的问题。关于努力,我意识到我可能错过了一些东西,但相反,我已经为此付出了努力。例如,我首先尝试使用this post 更好地理解这两个函数的区别。由于我更好地掌握了这些差异,我继续了解是否存在更好的替代方案。
  • @42- 对于“实际协变量”,我的意思是“不在拟合模型内”,而是一个列表。抱歉,我认为这个问题是隐含的,我尽力使这种区别变得清晰。你建议我编辑这个问题,还是完全删除它?谢谢。
  • 解决已关闭问题的方法是发布数据和代码,然后请求重新打开。然后您可以参考实际数据对象提出具体问题。尽量避免使用代词,通过“实际”名称来指代项目。
  • @42-,关于第一点,非常感谢,我会考虑如何改进这篇文章。但我恭敬地不同意你的第二点,也不理解。 “实际”不是代词,而是形容词,我认为没有理由不使用它。我明确指出“..输入是实际的候选解释变量(即变量列表,甚至在模型拟合之前)..”,明确了我的意思。然后我只是在最后一个问题中重复了这一点。

标签: r regression r-car


【解决方案1】:

我对这个问题的(主观)回答:在模型对象或数据本身上使用 vif 是否更合适,最佳实践是在将模型构建为过程的一部分之前执行此操作在建模之前了解数据中的关系。但说实话,我认为大多数情况下这是因为意外结果(通常会出现标准错误)而事后才完成的。

如果您想要一个可以采用适合对象或尺寸数据对象(矩阵或数据框)的函数,那么我认为您可能需要“自己动手”。我已经广泛使用了 rms/Hmisc 包对,并且在“rms”包中还有一个vif 以及一个which.influence 函数,它可以让您知道导致多重共线性的组合。它只接受一个合适的对象。因为处理 fit-objects 的版本可以查看 vcov 的结果和公式的 RHS 中的术语,所以您只需要一个参数。但是,如果您想指定在标注对象中检查哪些列,​​则需要提供函数代码来处理第二个参数。

我搜索了:

 sos::findFn("vif") 

...检查的第四页(“HH”包中的函数vif)似乎提供了使用哪种策略的选择:http://finzi.psych.upenn.edu/R/library/HH/html/vif.html

如果您想编写自己的代码,那么您已经在链接到的页面上拥有corvifmyvif 函数形式的代码。 corvif 函数使用基于模型的 myvif 函数。因此,您可以插入代码来检查methods(vcov) 返回的方法向量中是否存在第一个参数的类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2020-11-24
    • 2020-12-26
    • 2017-07-28
    • 2021-03-29
    • 2014-07-02
    • 2019-06-24
    相关资源
    最近更新 更多