De novo моделирование данных из экспериментальной модели данных.
С акцентом на R (хотя другое языковое решение было бы здорово).
При разработке эксперимента или опроса моделирование данных и проведение анализа этих смоделированных данных может обеспечить потрясающее понимание преимуществ и недостатков проекта.
Такой подход также может быть необходим для понимания и правильного использования статистических тестов.
Однако этот процесс, как правило, несколько утомителен, и многие вынуждены пропустить этот важный шаг в эксперименте или опросе.
Статистические модели и тесты содержат большую часть информации, необходимой для моделирования данных (включая допущение или явное изложение распределения).
Учитывая модель анализа (и связанные с ней допущения, например, нормальность и баланс), уровни фактора и меру значимости (например, p-значение), я хотел бы получить смоделированные данные (в идеале с обобщенной функцией, схожей с print (), прогнозировать (), моделировать ()).
Возможна ли такая обобщенная схема моделирования?
Если да, доступна ли такая структура в настоящее время?
Например, я хотел бы функцию, такую как:
sim(aov(response~factor1+factor2*factor3),
p.values=list(factor1=0.05,
factor2=0.05,
factor3=0.50,
factor2:factor3=0.05),
levels=list(factor1=1:10,
factor2=c("A", "B", "C"),
factor3=c("A", "B", "C")))
то есть обобщенная версия:
sim.lm<-function(){
library(DoE.base)
design<-fac.design(nlevels=c(10,3,3),
factor.names=c("factor1", "factor2", "factor3"),
replications=3,
randomize=F)
response<-with(design, as.numeric(factor1)+
as.numeric(factor2)+
as.numeric(factor3)+
as.numeric(factor2)*as.numeric(factor3)+
rnorm(length(factor1)))
simulation<-data.frame(design, response)}
ИЛИ
sim(glm(response~factor1+factor2*factor3, family=poisson),
p.values=list(factor1=0.05,
factor2=0.05,
factor3=0.50,
factor2:factor3=0.05),
levels=list(factor1=1:10,
factor2=c("A", "B", "C"),
factor3=c("A", "B", "C")))
ИЛИ
library(lme4)
sim(lmer(response~factor1+factor2 + (factor2|factor3)),
F_value=list(factor1=50,
factor2=50),
levels=list(factor1=1:10,
factor2=c("A", "B", "C"),
factor3=c("A", "B", "C")))
это создаст полный соответствующий data.frame
возможные примеры конкретных функций (пожалуйста, редактируйте по желанию)
- arima.sim
Функция существует для создания data.frame уровней факторов без смоделированного ответа:
например. conf.design
http://cran.r-project.org/web/views/ExperimentalDesign.html
источник
Ответы:
На самом деле есть универсальный S3,
simulate
который даже возвращает нужный вам фрейм данных (или другой список). ТипУ него уже есть методы для классов lm (работает также для glm или для вашего примера aov) и glm.nb (в MASS). Теперь вы можете написать
simulate
методы S3 для других классов объектов, например, для объектов из lme4. Вы можете проверить, для каких классов есть методы, набравили
источник
>getAnywhere("simulate.class") no object named ‘simulate.class’ was found
>getS3method("simulate","class") Error in getS3method("simulate", "class") : S3 method 'simulate.class' not found
В пакете для R появилась новая функция (
simfun
вTeachingDemos
настоящее время она только в версии для разработчиков на R-forge , пройдет некоторое время, прежде чем она будет на CRAN). Он предназначен для помощи в создании функций для симуляции.Одним из предполагаемых применений является то, что учитель будет использовать
simfun
Функция для создания функции и распространения ее среди учащихся (возможно, в какой-то момент может иметь веб-интерфейс). Затем учащиеся должны создать фрейм данных о факторах, представляющих экспериментальный дизайн, передать этот фрейм данных созданной функции и получить фрейм данных с дополнительным столбцом ответа, смоделированного в соответствии с параметрами и распределением ошибок, установленными учителем. Затем студент может проанализировать данные. Это позволяет учителю установить «истинные» отношения, но позволяет учащимся испытать множество различных экспериментальных схем, чтобы исследовать способы достижения «Истины» за гораздо меньшее время, чем в реальном эксперименте и требовать меньше работы для учителя, чем создать или найти набор различных образцов данных, представляющих различные возможные проекты.simfun
Функция предназначена быть гибким, учитель / создатель может основывать моделирование на подогнанной регрессионной модели, параметры , предоставленные учителя / создателя, или параметры suplied студенческим / пользователя.Созданную функцию также можно легко использовать в симуляции (с помощью
replicate
команды) для изучения мощности, размера выборки, размера эффекта и т. Д. Хотя полученное моделирование может быть медленнее, чем ручное создание процесса моделирования.Это похоже на то, что вы описываете, за исключением того, что для создания данных не требуются p-значения, но можно использовать
power.
функции илиpwr.
изpwr
пакета для создания симуляций, основанных на указании мощности и альфа, а не на средствах и различиях.Вот пример со страницы справки (есть еще несколько примеров), который предполагает, что вы измеряете высоту объектов (мужского и женского пола), которые вложены в города, вложенные в государства, существует случайный эффект для государства с SD 1 и случайный эффект для города (в пределах штата) с SD 0,5, тогда SD «ошибки» равен 3, у женщин среднее значение моделирования составляет 64 дюйма, а у мужчин среднее значение составляет 69 дюймов (ошибка SD и средства реалистичны , случайные эффекты немного надуманные).
simfun
Функция используется , чтобы создать новую функцию под названиемsimheight
, то кадр данных создаются с государством ID, города идентификаторов и колонками для пола субъекта (экспериментального проектирования или дизайна выборки), это передаютсяsimheight
и результат в новом фрейме данных с имитированными высотами (в дополнение к другим переменным), который затем может быть проанализирован с использованием соответствующих инструментов.источник
install.packages("TeachingDemos", repos="http://R-Forge.R-project.org")
. Вам нужно "http: //" в начале и без ";".Печатание
methods(simulate)
илиgetAnywhere("simulate")
должно работать. Первый дает вам несколько методов, если загружен пакет lme4:[1] simulate.lm * simulate.merMod * simulate.negbin * simulate.polr *
Lm-объекты используются как для моделей lm, так и для glm.
источник