9

Rを使用して、RMSE、傾き、切片、およびr ^ 2をプロットに追加するにはどうすればよいですか?実際のデータセットと同様の形式であるサンプルデータを含むスクリプトを添付しました。残念ながら、私は停止しています。方程式からオブジェクトを作成してそれをに挿入するよりも、これらの統計をグラフに追加する簡単な方法はありますtext()か?理想的には、統計をグラフに積み重ねて表示したいと思います。どうすればこれを達成できますか?

## Generate Sample Data
x = c(2,4,6,8,9,4,5,7,8,9,10)
y = c(4,7,6,5,8,9,5,6,7,9,10)

# Create a dataframe to resemble existing data
mydata = data.frame(x,y)

#Plot the data
plot(mydata$x,mydata$y)
abline(fit <- lm(y~x))

# Calculate RMSE
model = sqrt(deviance(fit)/df.residual(fit))

# Add RMSE value to plot
text(3,9,model)
4

1 に答える 1

17

これは、ベースグラフィックを使用し?plotmath、プロットを描画して注釈を付けるためのバージョンです。

## Generate Sample Data
x = c(2,4,6,8,9,4,5,7,8,9,10)
y = c(4,7,6,5,8,9,5,6,7,9,10)

## Create a dataframe to resemble existing data
mydata = data.frame(x,y)

## fit model
fit <- lm(y~x, data = mydata)

次に、注釈に表示する値を計算します。私はこれを好みますbquote()。ここでは、マークアップされたもの.(foo)はすべてオブジェクトの値に置き換えられますfoo。回答@mnelは、コメントであなたがsubstitute()同じことを達成するために使用しますが、異なる手段を介してあなたを指し示します。そこで、注釈に表示したい値ごとに、ワークスペースにオブジェクトを作成します。

## Calculate RMSE and other values
rmse <- round(sqrt(mean(resid(fit)^2)), 2)
coefs <- coef(fit)
b0 <- round(coefs[1], 2)
b1 <- round(coefs[2],2)
r2 <- round(summary(fit)$r.squared, 2)

次に、次のように記述された構成を使用して方程式を作成し?plotmathます。

eqn <- bquote(italic(y) == .(b0) + .(b1)*italic(x) * "," ~~ 
                  r^2 == .(r2) * "," ~~ RMSE == .(rmse))

それが完了したら、プロットを描画し、式で注釈を付けることができます

## Plot the data
plot(y ~ x, data = mydata)
abline(fit)
text(2, 10, eqn, pos = 4)

これは次のようになります。

ここに画像の説明を入力してください

于 2012-10-29T10:06:36.520 に答える