私は実験室で作業し、私たちは一日Levey-Jenningsのチャートに一日を生産しなければならないと私はまあ、私はGoogleで検索して見つけることができませんでした簡単な方法があるかどうR.Levey-Jenningsチャートを生成するRパッケージまたは関数がありますか?
答えて
を使用してLevey-Jenningsのチャートを生成思っていました1つはCRANですが、Levey-Jenningsのチャートも別の名前で表示されますか?とにかく、ここであなたがdescription on Wikipedia次私がちょうど作った微調整することができローテクの一つです:
# make a data series
my.stat <- rnorm(100,sd=2.5)
# get its standard dev:
my.sd <- sd(my.stat)
# convert series to distance in sd:
my.lj.stat <- (my.stat - mean(my.stat))/my.sd
plot(1:100, my.lj.stat, type = "o", pch = 19, col = "blue", ylab = "sd", xlab = "observation",
main = paste("mean value of", round(mean(my.stat),3),"\nstandard deviation of",round(my.sd,3)))
# a low tech L-J chart function:
LJchart <- function(series, ...){
xbar <- mean(series)
se <- sd(series)
conv.series <- (my.stat - xbar)/se
plot(1:length(series), conv.series, type = "o", pch = 19, col = "blue", ylab = "sd", xlab = "observation",
main = paste("mean value of", round(xbar,3), "\nstandard deviation of", round(se,3)), ...)
}
LJchart(rnorm(100,sd=2.5))
[編集:1枚のSDゾーンの網掛け領域を追加し、セスさんのコメントに触発]
は、この1つはまた、私は推測するより柔軟な引数を持っていますが、異なる機能が...
を共有するとき、私はあまりにも...
の使用を経験していないんだけど、この例でそれをしようとすると、それは破壊されない:
LJchart <- function(series, ...){
xbar <- mean(series)
se <- sd(series)
conv.series <- (my.stat - xbar)/se
plot(1:length(series), conv.series, type = "n", ...)
rect(0, -1, length(series)+1, 1, col = gray(.9), border = NA)
lines(1:length(series), conv.series, ...)
points(1:length(series), conv.series, ...)
if (! "main" %in% names(list(...))) {
title(paste("mean value of", round(xbar,3), "\nstandard deviation of", round(se,3)))
}
}
LJchart(rnorm(100,sd=2.5), xlab = "observations", ylab = "sd", col = "blue", pch = 19)
> は、スクリプトを確認してください。 "値"ベクトルのメインデータ。
すべてのコメント「## /#」が消去されることがあります。
value<-rnorm(100,1000,200) ##create list of numbers, "scan()" may be used for real observations
nmbrs<-length(value) ## determine the length of vector
obrv<-1:length(value) ## create list of observations
par(xpd=FALSE)
sd1<-sd(value[1:20])*1 ## 1 standart deviation
sd2<-sd(value[1:20])*2 ## 2 standart deviations
sd3<-sd(value[1:20])*3 ## 3 standart deviations
usd1<-mean(value)+sd1 ## upper limit
lsd1<-mean(value)-sd1 ## lower limit
lsd2<-mean(value)-sd2 ## lower limit
usd2<-mean(value)+sd2 ## upper limit
usd3<-mean(value)+sd3 ## upper limit
lsd3<-mean(value)-sd3 ## lower limit
## ploting the grid
plot(obrv,value,type="n",xlab="Observations",ylab="Value",ylim=c(lsd3-sd1,usd3+sd1))
abline(h=mean(value),col=2,lty=1)
abline(h=usd1,col=3,lty=3)
abline(h=lsd1,col=3,lty=3)
abline(h=usd2,col=4,lty=2)
abline(h=lsd2,col=4,lty=2)
abline(h=usd3,col=6,lty=1)
abline(h=lsd3,col=6,lty=1)
## 20 first values for L-G chart for QC limits
for (i in 1:20)
{
points(obrv[i],value[i],col="black")
}
lines(obrv[1:20],value[1:20],col="red")
## if over mean - "red", under mean - "blue"
for (i in 21:nmbrs)
{
points(obrv[i],value[i],col="blue")
segments(obrv[i-1],value[i-1],obrv[i],value[i],col="blue")
}
# 1s points - blue; 2s points - red
#if (value[i]<usd1 || value[i]>lsd1) points(obrv[i],value[i],col="blue")
#if (value[i]>usd1 || value[i]<lsd1) points(obrv[i],value[i],col="red")
#12s violation rule
#if (value[i]>usd1 || value[i]<usd1) text(30, usd3, "12s violation")
#if (value[i]>usd1 || value[i]<usd1) text(30, usd3, "12s violation")
#segments(obrv[i-1],value[i-1],obrv[i],value[i],col="blue")
#if (value[i]>usd1) break
#}
#legend placement - might be omited
#legend(1,min(value)-sd1*0.2,bg=8,c("mean","sd1","sd2","sd3"),lty=c(1,3,2,1),lwd=c(2.5,2.5,2.5,2.5),col=c(2,3,4,6),cex=0.8)
この種のグラフには多くのコードがあります。この種のプロットをより効果的に行うことができる 'ggplot2'のようなプロットライブラリをチェックしたいかもしれません。たとえば、この質問に対する私の答えを見てください。 –
Paul、最初の20の値はQCの値であり、sd(1,2,3)の推定と上限/下限の決定に必要です。評判が低いために画像を投稿できませんが、コードを試してみると、最初の20個の値が異なる色で表示されます。同様に、このタイプのグラフには許容される線種があります。私はggplot2が非常に柔軟であると確信していますが、コーディングによって多くの柔軟性が得られます。私はggplot2をもっと深く見なければならないが、それはとても印象的だ。ありがとうございました。 –
非常に多くの変数を定義しないことで、これをより読みやすくすることができます。標準偏差を一度計算して、必要に応じてそれを掛けて、 'usd'と' lsd'の手段と同じようにしてください。また、 'ab'の' h'(と 'col'、' lty')引数はベクトル化されているので、これらの行をすべて1回の呼び出しで描画することができます。 – Gregor
プロットの場合、私は標準グラフィックよりもggplot2
を優先します。
theme_set(theme_bw())
dat = data.frame(value = rnorm(100,sd=2.5))
dat = within(dat, {
value_scaled = scale(value, scale = sd(value))
obs_idx = 1:length(value)
})
ggplot(aes(x = obs_idx, y = value_scaled), data = dat) +
geom_ribbon(ymin = -1, ymax = 1, alpha = 0.1) +
geom_line() + geom_point()
得られます:したがって、ここggplot2
を使用して私の解決策であるために
を初心者:Levey-Jenningのチャートは特にで、品質コントロールサンプルを管理するために使用されるチャートであります医療検査室Y軸はノーです。 X軸はタイムスタンプでなければなりません。
上記のTim Riffeの回答から変更されました。これは実験室での使用に適しているはずです。
# LJchart # modified from Tim Riffe's answer on StackOverflow # # Version history: # 1.1 Added support for timestamp on each datapoint # Added rectangle to delineate the 2SD boundary, limited the scope to 3 SD # # Usage: # LJchart([Series of values], [Series of timestamp], [Manufacturer set mean], [Manufacturer set SD]) # e.g. # creatinineLV1 <- c(52, 51, 48, 51, 42, 48, 46, 44, 45, 51, 51, # 46, 50, 45, 52, 41, 58, 45, 44, 44, 42, 47, # 45, 43, 48, 43, 47, 47, 48) # timeCRLV1 <- c(41267.41106, 41267.51615, 41267.64512, 41267.683, # 41268.32005, 41269.55979, 41269.62026, 41269.88109, # 41270.20442, 41270.5897, 41270.61914, 41270.66589, # 41270.76311, 41271.43517, 41271.58534, 41271.69562, # 41271.75682, 41272.43492, 41272.51768, 41272.53, # 41272.59527, 41273.38759, 41273.46314, 41273.49382, # 41273.6311, 41273.66563, 41273.78007, 41273.82463, # 41273.88547) # > LJchart(creatinineLV1, timeCRLV1, 50, 6) LJchart <- function(series1, series2, meanx, sdx){ xbar <- mean(series1) se <- sd(series1) conv.series <- (series1 - meanx)/sdx plot(series2, conv.series, type = "n", ylim=c(-3,+3)) rect(0, -2, max(series2)+1, 2, col = gray(.9), border = NA) rect(0, -1, max(series2)+1, 1, col = gray(.8), border = NA) lines(series2, conv.series) points(series2, conv.series) title(paste("calculated mean value of", round(xbar,3), "\ncalculated standard deviation of", round(se,3))) }
...完了していません...? –
これはコマンドラインで呼び出される関数です... – bubu
申し訳ありませんが、私のブラウザのスクロールは一時的にフリッツにあったと思います。 –
- 1. NetBeansのRパッケージを処理するメソッドまたはプラグインはありますか?
- 2. TastypieにはAPIキーを生成するヘルパー関数がありますか?
- 3. jsのチャートをpdfにHTMLを生成するツールはありますか?
- 4. RにICCカラープロファイルを使用して色を変換するパッケージ/関数はありますか?
- 5. Javaソースファイルからパッケージ構造を生成するAPIはありますか?
- 6. Rにオブジェクトリレーショナルマッピングのパッケージがありますか?
- 7. lm()から返されたオブジェクトの予測をシミュレートする関数またはパッケージはありますか?
- 8. GoogleプレイスAPIにアクセスするためのRパッケージはありますか?
- 9. network()またはigraph()ネットワークをRで互換性のあるRgraphvizに変換するパッケージはありますか?
- 10. UNIQUE文字列またはUNIQUE番号を生成する関数はありますか?
- 11. VPD述語関数の実装 - ORA-28110:ポリシー関数またはパッケージにエラーがあります
- 12. 関数エラーまたはパラメータにエラーがありますか?
- 13. e1071パッケージのPredict.svm関数R
- 14. PHP:isLetter()関数または同等の関数がありますか?
- 15. Rスクリプトがロードされたパッケージ内の関数を使用したかどうかを簡単に知る方法はありますか?例えば
- 16. 変数でレポートを生成する必要があります
- 17. 校正/派生を表すMathematicaパッケージはありますか?
- 18. R:私は(R IN)関数を作成する必要がP
- 19. パッケージ名はProjectNameまたはCodeNameである必要がありますか?
- 20. 関数のヘルプファイルやデモ以外のRパッケージ "quantstrat"、 "blotter"、 "FinancialInstrument"などの一般的なマニュアルはありますか?
- 21. Rのqchisq関数に相当するPythonはありますか?
- 22. Rのsample()関数に相当するPythonはありますか?
- 23. コンパイル済みのRパッケージは下位互換性がありますか?
- 24. 関数またはデータフローダイアグラムの生成ツール
- 25. オブジェクトリテラルまたはコンストラクタ関数を使用する必要がありますか?
- 26. RパッケージがCRANに登録されていますが、利用可能なパッケージにはありません
- 27. 二項分布から相関した乱数を生成するR
- 28. Rパッケージ 'slackr'のテスト中にエラーが発生しました
- 29. Javaでは、新しいパッケージ、フォルダ、またはソースフォルダを作成する必要がありますか?
- 30. Javascriptの疑似乱数生成器はありますか?
これは私には良い反応のように見えますが、私のようなもので、人口SDのためのいくつかの水平線を追加します。ライン(時間= cで(SD、-sd)、LTY = 4) – Seth
OK、I編集で似たようなことをしました。私は尋問者がこのシェルを取って自分のニーズに合わせてカスタマイズできると思った。別の変更は、 'mean'と' sd'をオプションの引数にすることですが、それらが既知のパラメータである場合には指定されていなければ 'series'の関数でそれらを計算することです。私はそれを依頼者に任せます。 –
うわー、私はそのような精巧な反応を期待していませんでした!これはまさに私が探していたものです。私は努力を感謝します、ありがとう。 – user1283559