2

正と負の値を持つデータの y 値をログに記録して ggparcoord プロットを作成しようとしています。

x = data.frame(a=2*runif(100)-1,b=2*runif(100)-1,c=2*runif(100)-1,d=2*runif(100)-1,e=2*runif(100)-1)
dim(x)
[1] 100   5

次に、平行座標プロットをプロットしようとします。

library(GGally)
ggparcoord(x, columns=1:5, alphaLines=0.5) + scale_y_log10()

次のエラーが表示されます。

Warning messages:
1: In scale$trans$trans(x) : NaNs produced
2: Removed 167 rows containing missing values (geom_path).

負の値の対数を取ると NaN が生成されると考えています。ただし、x の次元が 100 行の場合に、欠損値を含む 167 行になる理由がわかりません。

いずれにせよ、x のすべてのインデックスに 2 の値を追加するだけでこれを解決しようとします (x の値が +1 から +3 の間になるようにします)。

x=x+2
ggparcoord(x, columns=1:5, alphaLines=0.5) + scale_y_log10()
Warning messages:
  1: In scale$trans$trans(x) : NaNs produced
2: Removed 167 rows containing missing values (geom_path).

ただし、同じメッセージが表示されます。これを解決する方法はありますか?

4

1 に答える 1

1

ggparcoordデフォルトでは、関数にはパラメーターがscale="std"あり、各変数の平均値を減算し、標準偏差で除算します。同じ y 軸上に非常に異なるスケールを持つ可能性のあるさまざまな変数の束をプロットしようとしているため、これは自然なデフォルトです。アプリケーションにとって残念なことに、これは に 2 を追加するxとスケーリングによって逆になり、負の値が残ることを意味します。

この問題を解決するアプローチは、スケーリングを削除することです。

ggparcoord(x, columns=1:5, scale="globalminmax") + scale_y_log10(breaks=c(1, 2))

ここに画像の説明を入力

于 2015-04-23T01:37:06.187 に答える