2017-08-02 21 views
0

私はRの対数x軸を使用してプロットしている非常に広いx範囲のデータを持っています。MS Excelを使用してデータをプロットし、データセットと期待される結果(下の画像)を見れば、私が見たいと思っているものです。回帰直線を対数x目盛りに追加

Excel scatterplot

私はデータOKをプロットし、回帰モデルを実行することができ、この使用R.を達成したいのですが、Rは、回帰直線/曲線を追加したいとは思われません。

は、ここに私のデータです:

data <- 
    data.frame(
    x = c(
     6.37E-05, 
     0.000584271, 
     0.001044085, 
     0.00011272, 
     3.95E-05, 
     6.05E-05, 
     0.000277963, 
     0.001800305, 
     3.70E-05, 
     0.002588335, 
     0.000710123, 
     0.000148309, 
     0.001069184, 
     0.001877917, 
     0.01086776, 
     0.043686462, 
     0.000276426 
    ), 
    y = c(
     -0.3375, 
     -0.35, 
     -0.35, 
     -0.35, 
     -0.3, 
     -0.35, 
     -0.3625, 
     -0.375, 
     -0.3, 
     -0.3625, 
     -0.3, 
     -0.3375, 
     -0.29, 
     -0.34, 
     -0.4, 
     -0.48, 
     -0.3375 
    ) 
) 

そして、ここで私がこれまでにしようとしてきたコードです。

1):

attach(data) 
    plot(data$x,data$y,log="x",xlab="independent variable", 
    ylab="dependent variable") 
model<-lm(data$y~data$x) 
abline(model) # THIS STEP DOESN'T WORK 

私は3件の問い合わせがあります。基本的なRのy〜logxプロットに回帰直線をどのように表示するのですか?

2)。どのように1)を繰り返すのですか? ggplotを使って?

3)。回帰直線/曲線が「ディップ」し始めるときに、(log)xの値を見つけるにはどうすればよいですか?

ありがとうございます。

+0

日時:3)。回帰直線は常に一定の傾きで減少しています。どの時点でも、それは浸るのを「開始」しません。 – Brian

答えて

0

例を再現可能にすることはできますか? これはうまくいくと思います。

dataframe %>% 
ggplot(aes(x = log(x), y = y) + 
geom_point() + 
geom_smooth(method = "loess") + 
xlab("independent variable") 

これは、dplyrとggplot2を使用します。

+0

これを試してみるとエラーメッセージが表示されます。 'ライブラリ(ggplot2) ライブラリ(dplyr) アタッチ(データ) データフレーム%>% ggplot(AES(X =ログ(X)、Y = Y)+ geom_point()+ geom_smooth(メソッド=「黄土")+ xlab(" independent variable ")) eval(expr、envir、enclos)のエラー:オブジェクト 'dataframe'が見つかりません aes(x = log(x)、y = y)+ geom_point (): 2進演算子に数値以外の引数 –

+0

データセットの名前に合わせて、データセットの名前を "dataframe"から "data"に変更してみてください。 – AaronT86

0
ggplot(data, aes(x, y)) + geom_point() + stat_smooth(method = "lm") 

enter image description here

ggplot(data, aes(x, y)) + geom_point() + stat_smooth(method = "lm") + 
    coord_trans(x = "log10") 

enter image description here

あなたが見ることができるように、回帰直線は、 " 'ディップ' に始まり、" これではポイントはありません。あなたがいる場合


アップデート

をあなたがプロットする前に、xの値を対数変換し、次のような数字で終わる:

enter image description here

あなたが本当に興味を持っているものであればあなたはそれを適合させることができます。

data.fit <- nls(100*y ~ pmin(plat, intx + slx*log(x)), 
        data = data, 
        start = list(plat = -32, intx = -60, slx = -4), 
        control = nls.control(warnOnly = T)) 
summary(data.fit) 
coef(data.fit) 

enter image description here

+0

回帰直線の非曲率の点を再確認しますが、log(x)尺度を使ってデータをプロットするとき、私が探しているのは "泳ぐようになる"点です。最初に 'data $ Xlog <-log(data $ x)'を使ってlog x vs yをプロットし、モデルを 'y〜Xlog'にフィッティングすることによってカーブをフィッティングする方法はありますか? –

+0

それは文字通りそれがディップを開始するポイントはありません。ラインの傾きが一定であるため、常に同じ速度でカーブしています。 'y〜Xlog'を使用した場合、直線が得られますが、2番目のプロットのように分布する点は、私が推測しているところはあなたが望むものではありません。上記のプロットを見ると、あなたは「ディップが始まる」と言いたい点はどこですか? – Brian

+0

logXとYをプロットして(軸の値を変換するのではなく、logXがxであると仮定して)、非線形最小二乗法または多項式回帰モデルをフィットさせます。曲線は傾きを変化させる。正しい??これらのデータは実験からのもので、私はyが目立って違いが始まるxのしきい値を探しています。上の2番目のggplotでは、 "dip"は0.01 x値の左に目盛りを中心に始まります。またはその周辺。その例では、xスケールが対数変換されているので実際には「曲線」ではないことが分かります。 –

関連する問題