如何在 R 中處理邏輯迴歸模型的 glm.fit 錯誤“NA/NaN/Inf”?
當我們為邏輯迴歸模型建立一般線性模型時,我們需要將分佈族指定為二項分佈。當我們沒有指定分佈族時,就會出現“NA/NaN/Inf”錯誤。因此,在建立邏輯迴歸模型時,需要在 glm 函式內使用 family="binomial"。
示例 1
以下程式碼片段建立了一個示例資料框 -
iv1<-rpois(20,5) iv2<-rpois(20,2) iv3<-rpois(20,5) DV1<-sample(0:1,20,replace=TRUE) df1<-data.frame(iv1,iv2,iv3,DV1) df1
建立了以下資料框 -
iv1 iv2 iv3 DV1 1 5 2 6 0 2 3 1 3 1 3 3 4 8 1 4 5 3 3 1 5 8 2 6 1 6 3 1 4 0 7 6 1 8 1 8 3 1 7 0 9 9 2 6 0 10 7 2 4 0 11 6 4 5 1 12 12 2 4 1 13 6 2 2 0 14 5 1 3 0 15 4 1 10 0 16 3 3 4 0 17 4 1 6 1 18 9 3 4 1 19 7 1 3 1 20 4 3 4 0
要為 df1 中的資料建立邏輯迴歸模型,請將以下程式碼新增到上述程式碼片段中 -
Model_1<-glm(factor(DV1)~iv1+iv2+iv3,data=df1)
錯誤:glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, −
‘y’ 中存在 NA/NaN/Inf
此外:警告資訊 -
1:在 Ops.factor(y, mu) 中:因子不支援 ‘-’ 操作
2:在 Ops.factor(eta, offset) 中:因子不支援 ‘-’ 操作
3:在 Ops.factor(y, mu) 中:因子不支援 ‘-’ 操作
要為 df1 中的資料建立分佈族為二項分佈的邏輯迴歸模型,請將以下程式碼新增到上述程式碼片段中 -
iv1<-rpois(20,5) iv2<-rpois(20,2) iv3<-rpois(20,5) DV1<-sample(0:1,20,replace=TRUE) df1<-data.frame(iv1,iv2,iv3,DV1) Model_1<-glm(factor(DV1)~iv1+iv2+iv3,data=df1,family="binomial") summary(Model_1)
輸出
如果將上述所有程式碼作為單個程式執行,則會生成以下輸出 -
Call: glm(formula = factor(DV1) ~ iv1 + iv2 + iv3, family = "binomial", data = df1) Deviance Residuals: Min 1Q Median 3Q Max -1.61472 -1.05484 -0.07657 1.07422 1.71351 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -2.59874 2.15616 -1.205 0.228 iv1 0.26684 0.22055 1.210 0.226 iv2 0.38736 0.47527 0.815 0.415 iv3 0.06822 0.23316 0.293 0.770 (Dispersion parameter for binomial family taken to be 1) Null deviance: 27.726 on 19 degrees of freedom Residual deviance: 25.223 on 16 degrees of freedom AIC: 33.223 Number of Fisher Scoring iterations: 4
示例 2
以下程式碼片段建立了一個示例資料框 -
x1<-runif(20,2,10) x2<-rnorm(20) DV2<-sample(0:1,20,replace=TRUE) df2<-data.frame(x1,x2,DV2) df2
建立了以下資料框 -
x1 x2 DV2 1 9.599662 -0.37487878 1 2 3.670901 -1.05763026 0 3 5.856532 -1.63384915 1 4 5.140322 0.70749809 1 5 7.215530 -0.45739769 0 6 2.347001 0.25501067 1 7 7.997737 0.32140975 0 8 4.880330 0.45770428 1 9 4.680856 1.36704134 1 10 3.720922 0.45992890 0 11 9.192565 0.91105622 0 12 7.699731 -0.35100775 1 13 3.183395 1.31957271 1 14 5.571414 0.82899477 0 15 6.724491 0.01077159 0 16 8.844951 -0.27490769 1 17 6.509826 0.25185960 1 18 9.098870 -1.75332078 1 19 2.230271 -0.52357984 1 20 4.004921 0.51763553 1
要為 df1 中的資料建立邏輯迴歸模型,請將以下程式碼新增到上述程式碼片段中 -
Model_2<-glm(factor(DV2)~x1+x2,data=df2)
錯誤:glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, −
‘y’ 中存在 NA/NaN/Inf
此外:警告資訊 -
1:在 Ops.factor(y, mu) 中:因子不支援 ‘-’ 操作
2:在 Ops.factor(eta, offset) 中:因子不支援 ‘-’ 操作
3:在 Ops.factor(y, mu) 中:因子不支援 ‘-’ 操作
要為 df2 中的資料建立分佈族為二項分佈的邏輯迴歸模型,請將以下程式碼新增到上述程式碼片段中 -
x1<-runif(20,2,10) x2<-rnorm(20) DV2<-sample(0:1,20,replace=TRUE) df2<-data.frame(x1,x2,DV2) Model_2<-glm(factor(DV2)~x1+x2,data=df2,family="binomial") summary(Model_2)
輸出
如果將上述所有程式碼作為單個程式執行,則會生成以下輸出 -
Call: glm(formula = factor(DV2) ~ x1 + x2, family = "binomial", data = df2) Deviance Residuals: Min 1Q Median 3Q Max -1.7809 -1.2987 0.8107 0.9623 1.0866 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.5657 1.4628 1.070 0.284 x1 -0.1536 0.2236 -0.687 0.492 x2 -0.3353 0.6104 -0.549 0.583 (Dispersion parameter for binomial family taken to be 1) Null deviance: 25.898 on 19 degrees of freedom Residual deviance: 25.267 on 17 degrees of freedom AIC: 31.267 Number of Fisher Scoring iterations: 4
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP