簡體   English   中英

R:在函數中包裝多項式回歸的問題

[英]R: Problems of wrapping polynomial regression in a function

在做多項式回歸的時候,我試圖將不同多項式的擬合放入一個列表中,所以我將glm包裝成一個函數:

library(MASS)

myglm <- function(dop) {
    # dop: degree of polynomial
    glm(nox ~ poly(dis, degree = dop), data = Boston)
}

但是,我想可能存在一些與惰性求值相關的問題。 模型的度數是參數 dop 而不是特定的數字。

r$> myglm(2)

Call:  glm(formula = nox ~ poly(dis, degree = dop), data = Boston)

Coefficients:
             (Intercept)  poly(dis, degree = dop)1  poly(dis, degree = dop)2  
                  0.5547                   -2.0031                    0.8563  

Degrees of Freedom: 505 Total (i.e. Null);  503 Residual
Null Deviance:      6.781
Residual Deviance: 2.035        AIC: -1347

當我使用此模型進行交叉驗證時,出現錯誤:

>>> cv.glm(Boston, myglm(2))
Error in poly(dis, degree = dop) : object 'dop' not found

那么我該如何解決這個問題呢?

Quosures、quasiquotation 和 tidy 評估在這里很有用:

library(MASS)
library(boot)
library(rlang)

myglm <- function(dop) {
  eval_tidy(quo(glm(nox ~ poly(dis, degree = !! dop), data = Boston)))
}
cv.glm(Boston, myglm(2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM