我想在 R 中運行一個簡單的 logit 回歸,其中我的因變數是公司是否收取正價,關鍵自變數是公司 x 英里半徑內的競爭對手數量。為了實作競爭變數,我正在查看 1、5、10 和 50 英里的半徑。
我不確定如何撰寫回圈,以及Error in eval(predvars, data, env) : object 'radius_i' not found 何時運行下面的回圈。
circle_radius = list("1", "5", "10", "15", "50")
for (i in seq_along(circle_radius)){
my_logit_4_r[i] <- glm(price_b1 ~ radius_i ,
data=data1,
family = binomial(link='logit'))
summary(my_logit_4_r[i])
}
所以我不確定如何指定回圈,因為我不想使用蠻力并分別撰寫 4 個回歸。希望能幫助我解決我犯的錯誤。
uj5u.com熱心網友回復:
您必須稍微更改您的代碼 - 首先,使用get()您嘗試呼叫的內容radius_[i]作為模型中的協變數 - 盡管需要將其更改為get(paste0("radius_",i))(假設您有一個名為radius_1,的協變數radius_5,等等您的data1資料框。此外,您可能想要洗掉seq_along(circle_radius)并執行,circle_radius因為seq_along將定義i為 1、2、3、4,洗掉它會將其定義為“1”、“5”、“10”和“50”。在回圈中分配給串列時,您還需要定義my_logit_4_r為串列并使用雙括號。[[i]]
下面我進行了更改以使其更清晰。
由于您沒有提供示例資料,我假設您的資料如下所示:
circle_radius <- list("1", "5", "10", "50")
data1 <- data.frame(price_b1 = runif(100),
radius_1 = runif(100),
radius_5 = runif(100),
radius_10 = runif(100),
radius_50 = runif(100))
試試下面的代碼:
my_logit_4_r <- vector(mode = "list", length = length(circle_radius))
for (i in circle_radius){
my_logit_4_r[[i]] <- glm(price_b1 ~ get(paste0("radius_",i)) ,
data=data1,
family = binomial(link='logit'))
summary(my_logit_4_r[[i]])
}
這些模型不會與我的樣本資料收斂,但它們會嘗試運行。如果這不起作用,請提供示例資料,我會更新我的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482647.html
下一篇:ggplotx軸刻度線丟失
