Я создаю отчет о статистическом анализе нескольких распределений; более конкретно случайные популяции и то, как их образцы отличаются от них, при этом последние придерживаются свойств нормальных распределений, в то время как их большая популяция в большинстве случаев остается перекошенной.KnitR HTML-вывод, показывающий неправильные/странные результаты. Встроенный код и варианты модификации, не приводящие к правильному выводу
Хотя я более чем доволен остальной частью вывода, я не могу понять, почему определенные числовые значения и их визуализация отличаются от тех, которые выполняются через командную строку. Вот некоторые из воспроизведенной коды несоответствия (первый я генерировать 1000 случайного экспонент):
set.seed(1000)
pop <- rexp(1000, 0.2)
В извлекая скажу, среднее pop
, я получаю точный правильный результат через консоль, которая 4,76475. Это значение, которое я должен получать через вывод уценки, но вместо этого knitr отображает его как 5.015616.
mean(pop)
[1] 4.76475
```{r, echo = T}
mean(pop)
```
[1] 5.015616
Его не только среднее значение, но и почти все остальные статистические переменные как для населения, так и для выборки. Кроме того, я также получаю неправильные визуализации в трикотажной продукции:
Участков сами показываются противоречив из-за неправильные результаты. Я думал, что это проблема с настройкой digits
, но digits(options)
на самом деле ее не решает, и не устанавливается по умолчанию scipen = 0
. Я попытался вставить встроенный код, но он все еще показывает мне неправильные значения. Обратитесь к руководству knitR, если отсутствовала настройка куска, но на самом деле не удалось найти там ошибку. Здесь что-то отсутствует или ошибка, связанная с случайными распределениями?
EDIT: Я заметил еще одно своеобразное свойство. Я создал новый файл разметки, чтобы увидеть, изменились ли результаты в соответствии с каждым новым выпуском, который я создал. Назовите это как test.Rmd
, но он содержит те же команды, которые я воспроизвел здесь с тем же семенем. И теперь я получаю совершенно другой результат, все еще отличный от исходного значения из командного сеанса.
РЕДАКТИРОВАТЬ: Кажется, что точка Романа работает. Вязаные результаты приближаются к исходным значениям, но все еще не соответствуют друг другу. Семя, установленное на 357, дало мне mean(pop)
4.881604, который находится всего в десятичной точке от исходного значения. Но почему здесь семя является сменой игры? Я думал, что это должно быть 1000.
EDIT: Вот некоторые из кода из .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)
Так вот довольно много основная часть файла, которая дает мне «закрыть» значение, если не ошибки или точные результаты из командной строки. Примечание. Значения, аннотированные, равны новым значениям после установки семени на 357, и я установил то же самое для глобальной среды. Значения, которые я получаю в консоли являются:
- 4,76475 для населения означают
- 5,00238 для выборочного среднего
- 21.80913 для населения дисперсии
- 0.6492991 для образца дисперсии
Не могли бы вы отправить больше кода, который точно дублирует проблему, с которой вы столкнулись? Прямо сейчас, с кодом, который вы опубликовали, меня немного смущает тот факт, что вы назначаете случайные значения 'pop', но затем вызываете' mean (exp) '. Вы хорошо объяснили эту проблему, но это может помочь увидеть больше того, что вы сделали. – Sam
Насколько важна ваша интерактивная сессия с использованием того же семени, что и ваш сценарий уценки? – Benjamin
Попробуйте установить семя ('set.seed (357)'), прежде чем создавать случайные переменные и посмотреть, совпадают ли они. –