2017-10-06 5 views
1

インポートされたSTATAデータセットでロジスティック回帰を使用しています。as.factorはバイナリ変数の値を変更します - これは私のggplotを混乱させます

バリアントの1つはバイナリ変数ですが、アトミックとしてインポートされます。インポート後、この変数を原子から因子に変更します。この変更を実行すると、Rは自動的に値を0と1から1と2に変更します。

気になる人は気になるのですか? はい、ggplotを使って平滑化された線をプロットする必要があるまでです。 ここで私のプロットで平滑化された線を得るためにas.numeric()を使う必要があります。 as.numericを使用しているため、プロットされた値は0と1ではなく1と2の間になります。 as.numeric()を使用しないと、平滑化された線は表示されません。

これを解決するお手伝いをしてもらえますか?

ID <- rep(1:10) 
BIN <- rep(0:1, 10) 
INDEPENDENT <- runif(10, min=1, max=100) 
df <- as.data.frame.matrix(cbind(ID, BIN, INDEPENDENT)) 

# Please stop and inspect the values under BIN before running next line 

df$BIN <- as.factor(df$BIN) 

# Please reinspect the BIN values after running the as.factor line 

df$BIN <- factor(df$BIN, levels = c(0,1), label = c("No", "Yes")) 

library(ggplot2) 
ggplot(df, aes(INDEPENDENT, as.numeric(BIN)))+ 
    geom_point()+ 
    geom_smooth(method = "loess")+ 
    ylab("Now I have to write this annoying line explaining that: \n 1=No 
    2=Yes") 
+3

'as.numeric(BIN)を - 1 '?私はなぜあなたが明確に数値として扱いたいと思っているのであれば、それを考慮する必要はありません。 – Roland

+0

こんにちはローランド。多分私の経験が不足しているためですが、変更しないと、glm()関数を使ってロジスティックモデルを実行しても問題はありませんか? –

+2

か、プロットに使用する追加の数値変数を作成するだけです(係数に変換する前に)。 – ikop

答えて

2

私はこれがあなたのプロットの問題解決を考える:コードの下

が問題に再現し

library(ggplot2) 
ID <- rep(1:10) 
BIN <- rep(0:1, 10) 
INDEPENDENT <- runif(10, min=1, max=100) 
df <- as.data.frame.matrix(cbind(ID, BIN, INDEPENDENT)) 
df$BIN <- factor(df$BIN, levels = c(0,1), label = c("No", "Yes")) 

ggplot(df, aes(INDEPENDENT, BIN))+ 
    geom_point()+ 
    geom_smooth(aes(y = as.numeric(BIN)), method = "loess") 

enter image description here

+0

に変換します。どうもありがとうございました! –

関連する問題