44500


こんにちは。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 '** ' 0.01 '_' 0.05 '.' 0.1 ' ' 1

のpreviousのように一つの変数としてまとめて扱われるはずなのですが、分析結果を見ると「gdp1.00E+11」「gdp1.01E+11」のようにデータ一つ一つが個別の変数のように扱われているように見受けられます。なぜ量的変数として処理されないのかがわからずこちらでご質問させていただきました。


CC BY-SA 4.0
2018-06-03T07:18:17.670
44494
2018-06-04T00:59:18.900
2018-06-04T00:49:01.800
28762
28762
question
r
Rのロジスティック回帰分析が正しく実行されない


おそらく、gdpの行に、数値として認識できないデータがあるためだと思われます。  
`read.csv`は`1.01E+11`という記載方法には対応しているため、それ自体は問題ありませんが、数値として認識できない行が一つでもあると、数値型として認識されず、質的変数としての解析になってしまいます。

数値以外の行や、ファイル頭や末に必要のない行がないかご確認ください。  
ファイル作成者の情報や合計や平均などの行をファイルに含んでしまってこういったエラーが起こることが多いです。

不審な部分が見つからない場合は、最初の10行くらいを別で保存して試してみて、それでいけるようであれば、徐々に範囲を広げて探していくことになります。

きちんと読み込まれれば`class(unit$gdp)`は`numeric`になるはずです。


CC BY-SA 4.0
2018-06-04T00:59:18.900
44500
2018-06-04T00:59:18.900
6092
44494
answer