Rのロジスティック回帰分析が正しく実行されない
こんにちは。Rを使い始めたばかりの初心者です。この度初めて質問させていただきます。
現在Rを使ったロジスティック回帰分析を試みているのですが、説明変数に指定した量的変数のGDP(国内総生産)がなぜかまとめて(?)処理されず、以下のようになってしまいます。どうすれば解決できますでしょうか。初歩的な質問でしたら申し訳ありません。恐れ入りますが、何卒よろしくお願い申し上げます。
unit<-read.csv("unit.csv", na = ".")
model_1 <- glm(costlyA ~ GDP, data = unit,family = binomial(link = "logit"))
Error in eval(expr, envir, enclos) : object 'GDP' not found
model_1 <- glm(costlyA ~ gdp, data = unit,family = binomial(link = "logit")
+ )
summary(model_1)
Call:
glm(formula = costlyA ~ gdp, family = binomial(link = "logit"),
data = unit)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.22931 -0.62796 -0.00008 -0.00008 2.68735
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.3863 0.7906 1.754 0.079510 .
gdp1.00E+11 -20.9524 4064.6349 -0.005 0.995887
gdp1.01E+11 -20.9524 2069.6109 -0.010 0.991923
gdp1.02E+11 -2.9267 0.9096 -3.218 0.001293 **
gdp1.02E+12 18.1798 5377.0065 0.003 0.997302
gdp1.03E+11 -20.9524 3584.6711 -0.006 0.995336
gdp1.04E+11 -20.9524 3242.4570 -0.006 0.994844
gdp1.05E+13 -2.7726 0.9129 -3.037 0.002388 **
gdp1.07E+11 -20.9524 3802.1178 -0.006 0.995603
gdp1.07E+12 -20.9524 7604.2355 -0.003 0.997802
gdp1.08E+11 -20.9524 5377.0065 -0.004 0.996891
gdp1.09E+12 -20.9524 5377.0065 -0.004 0.996891
gdp1.10E+11 -20.9524 1996.9702 -0.010 0.991629
gdp1.11E+12 -20.9524 4064.6349 -0.005 0.995887
gdp1.11E+13 -3.0603 0.9071 -3.374 0.000742 *
gdp1.12E+11 -20.9524 2467.1399 -0.008 0.993224
gdp1.12E+13 -3.4340 0.9525 -3.605 0.000312 *
gdp1.13E+11 -20.9524 7604.2355 -0.003 0.997802
gdp1.15E+11 -3.5835 0.9501 -3.772 0.000162 ***
gdp1.16E+12 -20.9524 2874.1310 -0.007 0.994183
gdp1.17E+11 -20.9524 4390.3075 -0.005 0.996192
gdp1.17E+12 18.1798 5377.0065 0.003 0.997302
gdp1.19E+12 -1.0986 1.0992 -0.999 0.317588
gdp1.20E+12 -2.5649 0.9757 -2.629 0.008566 **
コメント頂いた方、ご返信頂きありがとうございます。コメント欄にて返信させていただきたいのですが、どうしても長くなってしまいますので編集という形でこちらで一部回答させていただきたく思います(まだこのコミュニティーに慣れておらず勝手がわからないもので…不適切でしたら申し訳ないです)。
1.class(unit$gdp)、summary(unit)につきまして
class(unit$gdp)
[1] "factor"
summary(unit)
gdp loggdp gdp.per.capita
2.26E+12 : 128 12.35483662: 128 1709.591808: 128
64464547915: 115 10.80932094: 115 645.4650067: 115
1.95E+11 : 105 11.29020978: 105 1210.158769: 105
2.09E+12 : 105 12.32011832: 105 1596.470003: 105
3.33E+11 : 103 10.85958392: 100 706.7574751: 100
72374224249: 100 10.7451703 : 95 571.1622759: 95
(Other) :7313 (Other) :7321 (Other) :7321
conflict costlyA costly
Min. :0.000 Min. :0.0000 Min. :0.0000
1st Qu.:0.000 1st Qu.:0.0000 1st Qu.:1.0000
Median :1.000 Median :0.0000 Median :1.0000
Mean :1.005 Mean :0.1438 Mean :0.9133
3rd Qu.:1.000 3rd Qu.:0.0000 3rd Qu.:1.0000
Max. :5.000 Max. :1.0000 Max. :1.0000
combat costly.combat
Min. :0.0000 Min. :0.00000
1st Qu.:1.0000 1st Qu.:0.00000
Median :1.0000 Median :0.00000
Mean :0.8843 Mean :0.01493
3rd Qu.:1.0000 3rd Qu.:0.00000
Max. :1.0000 Max. :1.00000
やはりgdp,loggdp,gdp.per.captaがおかしいですね…(costlyA~costly.combatはダミー変数ですので問題はないように思います)念のため分析する前のcsvファイルの時点で文字列等になっていないか確認はしていますが…
2.「GDP(国内総生産)がなぜかまとめて(?)処理されず」につきまして
GDP自体は量的変数ですので、想定では
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -6.3811 3.5147 -1.816 0.0694 .
previous 0.8085 0.5851 1.382 0.1670
Signif. codes: 0 '' 0.001 '</strong>' 0.01 '' 0.05 '.' 0.1 ' ' 1</p>
のpreviousのように一つの変数としてまとめて扱われるはずなのですが、分析結果を見ると「gdp1.00E+11」「gdp1.01E+11」のようにデータ一つ一つが個別の変数のように扱われているように見受けられます。なぜ量的変数として処理されないのかがわからずこちらでご質問させていただきました。