私はいくつかのディストリビューションの統計分析に関するレポートを作成しています。より具体的にはランダムな集団とそれらのサンプルがそれらとどのように異なっているかで、後者は正規分布の特性に従うが、その大集団はほとんどの場合に歪んだままである。KnitR HTML出力が不正確/奇妙な結果を示しています。正しい出力を得られないインラインコードと変更オプション
私は出力の残りの部分に満足していますが、特定の数値とその視覚化がコマンドラインで行われたものと異なる理由を理解できません。ここで不一致の再現コードの一部です(最初の私は1000のランダムな指数を生成する):
set.seed(1000)
pop <- rexp(1000, 0.2)
、たとえばpop
の平均値を抽出するには、私は4.76475で、コンソールを通じて、正確な正しい結果を得ることができます。これは私がmarkdownの出力を通るべき値ですが、代わりにknitrは5.015616と表示します。
mean(pop)
[1] 4.76475
```{r, echo = T}
mean(pop)
```
[1] 5.015616
平均値ではなく、母集団およびサンプルの必要な統計変数の残りのほとんどすべてに含まれます。
自体が正しくないため結果の矛盾が表示されているプロット:加えて、私はまた、ニット出力で間違ったビジュアライゼーションを取得します。私はこれがdigits
の設定で問題だと思ったが、digits(options)
は実際には解決していません。どちらもデフォルトのscipen = 0
に設定されていません。私はインラインコードを挿入しようとしましたが、まだ誤った値を表示しています。チャンクの設定が欠落していても実際にそこに欠陥が見つからない場合は、knitRのマニュアルを参照してください。ここに欠けているものや、ランダムな分布に関連するバグはありますか?
編集:私は別の独特の特性に気付きました。新しいマークアップファイルを作成して、作成した新しい出力ごとに結果が異なるかどうかを確認しました。これをtest.Rmd
と名をつけましょうが、ここには同じシードで再現したのと同じコマンドが含まれています。そして、私はコマンドセッションからの元の値とはまだ異なる今やまったく異なる結果を得ています。
EDIT:Romanのポイントが動作しているようです。ニットの結果は元の値に近づいていますが、依然として正確に一致していません。 357に設定された種は、元の値から小数点だけ離れたの4.881604を与えました。しかし、なぜシードはゲームチェンジャーですか?私はそれが1000でなければならないと思った。
EDIT:Philが要求した.Rmdファイルのコードの一部です。
# Load packages
library(ggplot2)
library(knitr)
library(gridExtra)
# Generate random exponentials
set.seed(357)
pop = rexp(1000,0.2) # lambs is 0.2 with n = 1000
pop.table <- as.data.frame(pop)
# Take a sample simulating 1000 averages of 40 exponentials
sample.exp = NULL
for (i in 1:1000){
sample.exp = c(sample, rexp(40, 0.2)} # n = 40 here
sample.df <- as.data.frame(sample.exp)
# Generate means and compare
mean(pop) # 4.881604
mean(sample.exp) # 4.992426
# Generate variances and compare
var(pop) # 26.07005
var(sample.exp) # 0.6562298
# Some plots
plot.means.pop <- ggplot(pop.table, aes(pop.table$pop)) + geom_histogram(binwidth = 0.9, fill = 'white', colour = 'black') + geom_vline(aes(xintercept = mean(pop.table$pop), colour = 'red')) + labs(title = 'Population Mean', x = 'Exponential', y = 'Frequency') + theme(legend.position = 'none') +theme(plot.title = element_text(hjust = 0.5))
plot.means.sample <- ggplot(sample.df, aes(sample.df$sample.exp)) + geom_histogram(binwidth = 0.2, fill = 'white', colour = 'black') + geom_vline(aes(xintercept = mean(sample.df$sample.exp)), colour = 'red', size = 0.8) + labs(title = 'Sample Mean', x = 'Exponential', y = 'Frequency') + guides(fill = F) + theme(plot.title = element_text(hjust = 0.5))
grid.arrange(plot.means.sample, plot.means.pop, ncol = 2, nrow = 1)
エラーがないか、コマンドラインから正確な結果が得られれば、私は 'close'値を与えてくれるファイルのかなりの部分です。注:シードを357に設定した後、注釈された値は新しいの値であり、グローバル環境に対して同じ値を設定しました。私はコンソールで受信していた値は以下のとおりです。人口のための
- 4.76475はサンプルのため
- 5.00238は、母集団分散
- 21.80913を意味するわけ。スタックオーバーフローの質問をしたときは標本分散のための6492991は
実行している問題と正確に重複するコードをさらに投稿できますか?今、あなたが投稿したコードでは、ランダムな値を 'pop'に代入しているのに' mean(exp) 'を呼び出すということでちょっと混乱します。あなたは問題をうまく説明しましたが、あなたがしたことの詳細を見るのに役立ちます。 – Sam
重要ですが、あなたのマークダウンスクリプトと同じシードを使用している対話セッションですか? – Benjamin
ランダム変数を作成して一致するかどうかを確認する前に、シード( 'set.seed(357)')を設定してみてください。 –