Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

41 страниц V   1 2 3 > » 

p2004r
Отправлено: 7.12.2017 - 09:42


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(зоо @ 6.12.2017 - 17:20) *
Подскажите, пожалуйста, вопрос из зоологии. Мне нужно посмотреть регрессионную модель вида:
y = YG + MG + YG×MG + L + МС
где y это масса коровы (метрич.пер)
YG ? эффект года рождения кат.пер.;
MG ? эффект месяца рождения кат.пер;
YG×MG ? совместное влияние факторов ?месяц × год рождения?;
L ? эффект линейной принадлежности кат.пер;
MC ? эффект месяца отела; кат. пер
для каждого из этих предикторов мне нужно построить табличку вида, как на картинке, где в ячейках должен быть скорректированный R^2.


Конечно, я бы мог сделать нечто
mymodel<-lm(y~YG,data=data)
Но это нужно делать для каждой из указанных независимой переменной, при том что у меня зависимых переменных много. Такая табличка будет для ряда зависимых переменных
Можно ли сделать в R, чтобы ввести это уравнение и он для каждой независимой переменной рассчитал регрессионные данные(коэф-ты, R^2) по отдельности?

Данные зазиппировал. т.к. на форуме я обратил внимание , что тут нельзя эксель кидать.



Стандартные репорты о моделях печатает apsrtable, stargazer.

Вот так лепить детерминацию исключая все остальные переменные модели я бы не стал, есть масса методов отбора переменных в модель более вменяемых.

  Форум: Медицинская статистика · Просмотр сообщения: #22296 · Ответов: 7 · Просмотров: 212

p2004r
Отправлено: 29.11.2017 - 12:25


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 29.11.2017 - 01:09) *
Это я так понимаю второй рисунок? А на первом что за 3 разных столбца с дисперсией? Фракция А варьирует значительно сильнее чем В, а В сильнее чем С? Можете объяснить?


Читаю данное пояснение и вижу, что это все-таки не то, даже совсем не то. Тут написано, что тернарные графики используются для показа состава смесей, состоящих из 3-х компонентов или показа условий когда три отдельные фазы существуют в равновесии. У меня ничего такого нет, да я и так знаю, что эти фракции у каждого индивида существуют в равновесии, у меня есть действующий агент, и надо бы статистически доказать повлиял/не повлиял ли он (и как именно) на общий/фракционный состав смеси. Т.е. есть ли какой-либо эффект он него? Да и не 3 компонента может быть, а до 10 (хотя какая разница), сейчас например я делаю опыт где определяю уже 5 фракций.


1) Прочитайте сначала https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%...%B5%D0%BD%D1%82 потом будет уместно задавать вопросы.


2) я поделил на количество, это видите? (хотя, какая разница)
  Форум: Медицинская статистика · Просмотр сообщения: #22272 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 26.11.2017 - 20:02


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(comisora @ 25.11.2017 - 22:48) *
2 p2004r
Добрый вечер. У Вас
df.rand1 <- t(apply(t(replicate(1000, runif(3))), 1, function(d) d/sum(d)))
df.rand2 <- t(apply(t(replicate(1000, 3+runif(3))), 1, function(d) d/sum(d)))
p1 <- prcomp(df.rand1)
p2 <- prcomp(df.rand2)
Можете показать пример, как "сравнить/обработать" p1 и p2 и заполучить "заветное p<0.05"?


У меня не так. У меня сделан predict() по однократно сделанному анализу.

Процентили для набора смесей считает пакет из поста (где то целая книжка попадалась как в R работать с данными о процентном составе смесей, сейчас не соображу).
  Форум: Медицинская статистика · Просмотр сообщения: #22257 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 25.11.2017 - 20:14


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 24.11.2017 - 18:45) *
Да, теперь это работает, спасибо. Однако, чтобы ответ был полезен не только тому, кто отвечает, но и тому, кто задал вопрос, необходимо объяснить, что показано на рисунках (наверно, это рис.1 и 2). Пока что для меня это просто какая-то дисперсия в 3 столбцах и какое-то рассеяние с какими-то векторами v2-v4 по каким-то осям pc1 и pc2. Можете подробно объяснить?


Прочитайте что такое тернарный график https://en.wikipedia.org/wiki/Ternary_plot и как работать с данными о составе смесей (или результатов голосований).

Собственно тернарный рафик в результате PCA датасета составов смесей и получается всегда.

Можно взять пакет R http://www.ggtern.com/ и построить процентили распределения смеси липидов в нем.
  Форум: Медицинская статистика · Просмотр сообщения: #22250 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 24.11.2017 - 21:55


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 24.11.2017 - 18:45) *
Да, теперь это работает, спасибо. Однако, чтобы ответ был полезен не только тому, кто отвечает, но и тому, кто задал вопрос, необходимо объяснить, что показано на рисунках (наверно, это рис.1 и 2). Пока что для меня это просто какая-то дисперсия в 3 столбцах и какое-то рассеяние с какими-то векторами v2-v4 по каким-то осям pc1 и pc2. Можете подробно объяснить?

Это не работает (наверно это рис.3): Ошибка в predict(df.lipid.pca, data.frame(t(colMeans((df.lipid[-1, 2:4]/df.lipid[-1, :
объект 'df.lipid.pca' не найден

Да, по Вашим ссылкам полно пакетов, спасибо. Но внятного объяснения с примером пока не нашлось. Поищу еще на досуге (хотя может такого объяснения и нет).


Да, пропущена строчка сохранения результатов PCA, но сам PCA явно проводиться в первой части приведенного кода. Просто сохраните его.

df.lipid.pca <- prcomp(df.lipid[,2:4]/df.lipid[,1], center=T, scale.=T)
  Форум: Медицинская статистика · Просмотр сообщения: #22244 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 24.11.2017 - 11:13


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 24.11.2017 - 10:30) *
Визуально я вижу, что агент слегка уменьшает количество фракции А, очень сильно увеличивает количество фракции С, но не влияет на фракцию В.


Настоящие влияния агента не совсем такие.

А соответствуют влиянию агента и ничему больше.

В соответствуют влиянию агента, но это влияние слабо + B имеет собственную динамику

С соответствует влиянию агента сильнее чем A, но "в противофазе".
  Форум: Медицинская статистика · Просмотр сообщения: #22239 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 24.11.2017 - 11:06


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 24.11.2017 - 10:30) *
Это какая конкретно программа (и версия) и где ее взять? И как туда ввести приведенный код?


https://ru.wikipedia.org/wiki/R_(%D1%8F%D0%...BD%D0%B8%D1%8F)
  Форум: Медицинская статистика · Просмотр сообщения: #22238 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 24.11.2017 - 08:56


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(nokh @ 23.11.2017 - 22:46) *
>p2004r
С обычным PCA здесь засада в виде композиционного характера данных. Где проходит граница допустимой степени "композиционности" не известно. Но традиционно для долей процентов (типа миллиграммы на литр или килограмм) ей пренебрегают и скорее всего обосновано. Но когда речь идёт о % и десятках процентов, композиции будут натягивать ложные корреляции. С 1990-х для многомерного анализа композиционных данных используют статистику Эйчисона, в т.ч. специальные предварительные преобразования "разворачивающие" constrained данные в как бы независимые. Разбирался давно и использовал ещё аддон к экселю "CoDaPack". Сейчас это есть в r, но пока не было подходящей задачи:
http://www.stat.boogaart.de/compositions/
https://cran.r-project.org/web/packages/rob...ions/index.html



Вот иллюстрация (именно для больших колебаний состава)

Код
> df.rand <- t(apply(t(replicate(1000, runif(3))), 1, function(d) d/sum(d)))
> str(df.rand)
num [1:1000, 1:3] 0.3748 0.4819 0.0077 0.2919 0.42 ...
> head(df.rand)
            [,1]       [,2]       [,3]
[1,] 0.374779178 0.32692176 0.29829906
[2,] 0.481935449 0.02743644 0.49062811
[3,] 0.007700625 0.85640582 0.13589356
[4,] 0.291939338 0.62626290 0.08179776
[5,] 0.420032905 0.42936418 0.15060291
[6,] 0.497522641 0.05128767 0.45118969
> plot(prcomp(df.rand))
> biplot(prcomp(df.rand))


Для многомерных данных все также.

Вот вариант для "малых колебаний состава смеси"

Код
> df.rand <- t(apply(t(replicate(1000, 3+runif(3))), 1, function(d) d/sum(d)))
> str(df.rand)
num [1:1000, 1:3] 0.327 0.329 0.34 0.335 0.321 ...
> head(df.rand)
          [,1]      [,2]      [,3]
[1,] 0.3271537 0.3089877 0.3638586
[2,] 0.3286260 0.3195480 0.3518260
[3,] 0.3397769 0.3595972 0.3006259
[4,] 0.3351038 0.3093977 0.3554985
[5,] 0.3206596 0.3115080 0.3678324
[6,] 0.3065733 0.3678315 0.3255952
> plot(prcomp(df.rand))
> biplot(prcomp(df.rand))



Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение

 
  Форум: Медицинская статистика · Просмотр сообщения: #22236 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 24.11.2017 - 01:35


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(nokh @ 23.11.2017 - 22:46) *
>p2004r
С обычным PCA здесь засада в виде композиционного характера данных. Где проходит граница допустимой степени "композиционности" не известно. Но традиционно для долей процентов (типа миллиграммы на литр или килограмм) ей пренебрегают и скорее всего обосновано. Но когда речь идёт о % и десятках процентов, композиции будут натягивать ложные корреляции. С 1990-х для многомерного анализа композиционных данных используют статистику Эйчисона, в т.ч. специальные предварительные преобразования "разворачивающие" constrained данные в как бы независимые. Разбирался давно и использовал ещё аддон к экселю "CoDaPack". Сейчас это есть в r, но пока не было подходящей задачи:
http://www.stat.boogaart.de/compositions/
https://cran.r-project.org/web/packages/rob...ions/index.html



PCA прекрасно расправляет "смеси" в тернарные трафики, отжимая лишнюю размерность. Здесь просто крайне мал размах варьирования состава, вот и не видно результирующего "треугольника(пирамиды)".
  Форум: Медицинская статистика · Просмотр сообщения: #22235 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 23.11.2017 - 23:47


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


https://znatok-ne.livejournal.com/113063.html
  Форум: Медицинская статистика · Просмотр сообщения: #22234 · Ответов: 0 · Просмотров: 85

p2004r
Отправлено: 23.11.2017 - 19:49


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 23.11.2017 - 16:13) *
Имеются данные (процентное содержание фракций A, B и C (столбцы 2-4) и общее количество (столбец 1) определенных липидов в плазме), взятые у одного контрольного индивида (1) и полсотни испытуемых (2-48) после воздействия неким агентом. Как правильно статистически обработать эти данные, и какие и чем обоснованные выводы в результате можно сделать?


"Обработать" это жаргон ничего увы конкретного не означающий.

1.

Очень странный набор данных.

Если у нас есть точка и выборка, то все что мы можем сделать это построить процентили распределения и посмотреть на какой из них попала именно эта точка.

mvtnorm: Multivariate Normal and t Distributions https://cran.r-project.org/web/packages/mvt...s/MVT_Rnews.pdf

2. Можно просто посмотреть что там в датасете "глазами"

Вот например читаем данные и смотрим на большую часть дисперсии в них. Номера точки соответствуют нумерации в файле
Код
> df.lipid <-read.csv2("Фракционный состав.csv", header=F)
> plot(prcomp(df.lipid[,2:4]/df.lipid[,1], center=T, scale.=T))
> biplot(prcomp(df.lipid[,2:4]/df.lipid[,1], center=T, scale.=T))


Ну и например можно оценить где здесь среднее арифметическое многомерного распределения, и его квантили визуально оценить бутсрепом.

Код
> butstrep <- do.call(rbind,
                                  replicate(10000,
                                                  predict(df.lipid.pca,
                                                               data.frame(t(colMeans((df.lipid[-1,2:4]/df.lipid[-1,1])[sample(1:(48-1), replace=T),])))),
                                                  simplify=F) )

> plot(df.lipid.pca$x[,1:2])
> points(butstrep[,1:2], pch=".")

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
  Форум: Медицинская статистика · Просмотр сообщения: #22230 · Ответов: 22 · Просмотров: 1269

p2004r
Отправлено: 16.11.2017 - 22:02


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(nastushka @ 16.11.2017 - 17:02) *
Код
Description
Calculate power for one-way ANOVA models.
Usage
pwr.1way(k=k, n=n, alpha=alpha, f=NULL, delta=delta, sigma=sigma)
Arguments
k
Number of groups
n
Sample size per group
f
Effect size
alpha
Significant level (Type I error probability)
delta
The smallest difference among k groups
sigma
Standard deviation, i.e. square root of variance


И где в этих аргументах вводить среднее и сигмы, у меня три группы и все имеют разные средние и сигмы)) а тут дана только одна сигма



Ну так посчитайте-оцените размер эффекта https://cran.r-project.org/web/packages/pwr...r-vignette.html
  Форум: Медицинская статистика · Просмотр сообщения: #22197 · Ответов: 8 · Просмотров: 441

p2004r
Отправлено: 16.11.2017 - 16:58


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(nastushka @ 16.11.2017 - 16:49) *
Подскажите, пожалуйста, как мне рассчитать мощность для ановы с тремя группами, имея только средние и стандартные отклонения?
пример
М=40, S=4
M2=35 S=10
M3=45 S=8
Как мне мощность рассчитать в R


https://cran.r-project.org/web/packages/pwr2/pwr2.pdf
  Форум: Медицинская статистика · Просмотр сообщения: #22195 · Ответов: 8 · Просмотров: 441

p2004r
Отправлено: 15.11.2017 - 08:33


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(comisora @ 15.11.2017 - 00:22) *
Всем добрый вечер.
Хочется уйти с Word'а в систему написания текстов так, чтобы можно было вставлять результаты из R, картинки, таблицы, ссылки на литературу, автособирать списки, оглавление, быстро редактировать стили и все прочее, что необходимо для публикаций, книг. Выбор, как понимаю, большой (латех, markdown), но не знаю, во что следует ударяться, пока думаю в сторону emacs+R+bookdown. Прошу поделиться опытом, кто как решает данный спектр задач.


Если коротко, то emacs + ess + austex(reftex) + noweb + flyspell

В LaTeX естественно все стили поддерживаемые knitr() (презентации beamer)

PS как вариант org-mode + babel (тогда добавляется еще куча языков), тогда это вообще система планирования + лабораторный журнал

PPS если сложные окружения для интерактивной работы в docker, то ядро R запускается в юпитер нотебоок (это проще чем тащить туда sshd).
  Форум: Медицинская статистика · Просмотр сообщения: #22189 · Ответов: 2 · Просмотров: 268

p2004r
Отправлено: 8.11.2017 - 18:16


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(nokh @ 4.11.2017 - 18:03) *
1
PS По поводу "обычных людей". Обычные люди работают на заводах, в офисах, магазинах и т.п. Они не измеряют длину побегов и не тусуются на статистических форумах. Процитирую сам себя (пособие скоро должно выйти):
"Я - биолог (я ? врач), а не статистик". Такая не всегда верная установка тиражируется в некоторых медицинских, педагогических и даже научных коллективах, а потому встречается не так уж редко. Она справедлива до тех пор, пока человек не приступает к выполнению научной квалификационной работы. Статистический анализ данных является неотъемлемой частью современной научной методологии. Поэтому, если человек работает над школьным научным проектом, дипломной работой бакалавра, магистерской, кандидатской или докторской диссертацией, он должен предъявить соответствующие данному квалификационному уровню умения грамотно получать данные и выделять из них наиболее существенные закономерности с использованием статистических методов. Поэтому, пока Вы занимаетесь научной работой, Вы ? статистик.


Только что увидел вот такое smile.gif


Эскизы прикрепленных изображений
Прикрепленное изображение
 
  Форум: Медицинская статистика · Просмотр сообщения: #22160 · Ответов: 35 · Просмотров: 2680

p2004r
Отправлено: 8.11.2017 - 14:44


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(leo_biostat @ 8.11.2017 - 13:55) *
Nerbi, hi.gif!

Без использования логистической регрессии ROC-кривые можно построить отдельно для каждого признака (переменной). Тогда как используя логистическую регрессию, ROC-кривая строится более продуктивно, учитывая все признаки, вошедшие в уравнение. Напомню, что эти признаки, называемые предикторами, существенно повышают степень взаимосвязи зависимой переменной от набора предикторов. Нежели степень взаимосвязи зависимой переменной и ОДНОГО признака. Пример такой взаимосвязи можете прочитать в статьях про логистическую регрессию, в частности по адресу http://www.biometrica.tomsk.ru/logit_4.htm

Успеха, Nerbi!


1) Сваливать в одну модель склонную к переобучению все независимые переменные вместе крайне плохой совет, стратегия которая ведет к переподгонке и полной неинформативности модели.

2) Ну а включение в модель логично начинать с показателей которые что то гарантированно значат для зависимой переменной.

Так что не могу не порекомендовать снова library(Boruta) https://m2.icm.edu.pl/boruta/ и аналогичные пакеты реализующие идею feature selection.

Примеры использования в статьях https://scholar.google.com/scholar?cites=13...968550215677895
  Форум: Медицинская статистика · Просмотр сообщения: #22157 · Ответов: 3 · Просмотров: 351

p2004r
Отправлено: 8.11.2017 - 13:14


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 8.11.2017 - 11:56) *
Спасибо,


... я еще разок вам всем в лицо плюну sad.gif

Дальше "Света" не читайте.

PS

Зачем вы господа хорошие кормите очередного тролля? Это же очевидно что такие заявления надо тереть в момент их появления.... ну в крайнем случае давать ссылку на википедию.

Тролль (обычно на нашем форуме это недоучившийся птушник программист подавшийся в датасаенс) всегда маскируется под "неосведомленного пользователя", который "чисто по глупости" делает "случайные" провокационные заявления. Часто действует из каких то конкурентных соображений. Цель в любом случае простая --- "нагадить в люфте"ТМ.

Поверьте нет больше попаболиТМ для этого же.ребенка если его труды будут просто стерты со страниц форума. smile.gif. Это все варианты мотивов такой "беззащитной овечки" достойно обесценивает в 0.
  Форум: Медицинская статистика · Просмотр сообщения: #22155 · Ответов: 35 · Просмотров: 2680

p2004r
Отправлено: 8.11.2017 - 13:00


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Nerbi @ 8.11.2017 - 12:54) *
Здравствуйте! Подскажите, корректно ли строитьROC-кривую без проведения логистической регрессии и можно ли для построения ROC-кривой использовать значение признака (например, возраст или уровень гликемии, или скорость клубочковой фильтрации) с целью определения того значения признака, которое бы служило порогом, влияющим на исход заболевания?


ROC всё равно откуда взялся предиктор. Она вся состоит из точек (порогов) принятия решения, поэтому оптимальную точку принятия решения надо выбирать указывая (как минимум) частоту исходов в популяции где планируется использовать данный предиктор. А как максимум надо использовать для выбора точки принятия решения ещё и соотношение материальных потерь при ошибках первого и второго родов.
  Форум: Медицинская статистика · Просмотр сообщения: #22154 · Ответов: 3 · Просмотров: 351

p2004r
Отправлено: 4.11.2017 - 13:10


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(Света K @ 3.11.2017 - 15:40) *
После воздействия неким фактором (А) измерили длину 4 побегов в опыте и контроле.
Без действия:
75,2
78,3
88,9
87,0

После:
80,1
90,5
95,9
99,2

Как правильно написать (и вначале посчитать), что их длина увеличилась?
Судя по Вашему пункту 2, наверное, так: действие "А" эффективно, в результате длина увеличилась на 9 +- 5,3 см. (корень(44/4+69/4)=5,3)

А как по пункту 3? (В наличии только Excel 2003-2007 и калькулятор). Разные PAST недоступны, да и где их брать?


А как же сравнивать принадлежность или нет наблюдаемой выборки некоторому теоретическому рапределению?


Вы правы, но так и будет, поскольку обычным людям (т.е. не-статистикам) чаще всего некогда разбираться в деталях стат-анализа, им нужны четкие конкретные алгоритмы, причем с примерами решений и с примерами выводов, а очень часто на конкретные вопросы в лучшем случае дают какие-то ссылки, а в худшем - просто рекомендуют "погуглить".
Если хотите изменения ситуации - организовывайте создание _практической_ базы знаний "вопрос-ответ" - с примерами, пояснениями и выводами.

Я, конечно, кое-что почитаю из Ваших ссылок (если среди них есть ссылки на конкретные алгоритмы, а не вообще), спасибо, но... См. выше.


Расчет очень прост

Код
> df.data
    V1 V2
1 75.2  a
2 78.3  a
3 88.9  a
4 87.0  a
5 80.1  b
6 90.5  b
7 95.9  b
8 99.2  b

> quantile(replicate(10000, {x <- sample(df.data$V1, replace=T); mean(x[1:4])-mean(x[4:8])}), probs=c(0.025,0.975))
     2.5%     97.5%
-9.210125  9.405000

> quantile(replicate(10000, {x <- sample(df.data$V1, replace=T); mean(x[1:4])-mean(x[4:8])}), probs=c(0.05,0.95))
      5%      95%
-7.68500  7.79025

> mean(df.data$V1[df.data$V2=="a"])-mean(df.data$V1[df.data$V2=="b"])
[1] -9.075


Разница средних групп не выходит за пределы доверительного интервала для этой разницы посчитанного рандомизацией при уровне когда мы считаем за достоверное событие имеющее вероятность ошибки принятия решения первого рода 5%.. Если выберем достаточным уверенность 9 случаев из 10, то можете считать доказанным влияние. (правда неплохо было бы посмотреть и уровень ошибок второго рода).

PS Ученый это не "обычный человек- не статистик", не знать для него математику в объеме необходимом для доказательства гипотез которые он выдвигает о своих данных, равносильно признанию в неумении читать и писать... Ну а что пусть писцы пишут, а заодно и правильные слова с понятиями придумывают.
  Форум: Медицинская статистика · Просмотр сообщения: #22120 · Ответов: 35 · Просмотров: 2680

p2004r
Отправлено: 3.11.2017 - 00:01


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(kont @ 2.11.2017 - 22:20) *
Я Вас правильно понял, теперь уже можно делать форекаст на сплитованном датасете df.sales.t?

# проверки на стационарность
adf.test(df.sales.t, alternative = "stationary")

#forecast
auto.arima(df.sales.t, seasonal=FALSE)
fit2 = arima(df.sales.t, order=c(1,1,7))

#
fcast <- forecast(fit2, h=1) # 1day ahead


Тут всё забавнее...

Поскольку пока у нас только 1 месяц, то дни недели трудно интерпретировать недели, и мы можем дни месяца слить вместе с днями недели

Код
> res_hosvd <- hosvd(as.tensor(df.sales.t.all), ranks=c(30,899,30))
  |======================================================================| 100%
> 1-res_hosvd$fnorm_resid/fnorm(as.tensor(df.sales.t.all))
[1] 0.9953629
> res_hosvd <- hosvd(as.tensor(df.sales.t.all), ranks=c(30,900,30))
  |======================================================================| 100%
> 1-res_hosvd$fnorm_resid/fnorm(as.tensor(df.sales.t.all))
[1] 1


Но ассортимент товаров реально состоит из 900 позиций (с точки зрения стоимости и сочетаемости продаж).

Это точно не синтетика какая то?
  Форум: Медицинская статистика · Просмотр сообщения: #22109 · Ответов: 26 · Просмотров: 1500

p2004r
Отправлено: 2.11.2017 - 19:27


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(kont @ 2.11.2017 - 15:50) *
Зато я понял, что значит утро вечера мудренее, я услышал, то о чем говорил p2004r. Действительно под вечер глядя ничего не соображал, а Вы правы, я лепил все в одну кучу, мне же нужно сделать форекаст для каждого магазина и каждого артикулла. Я пошел не тензорным путем, он для меня сложен пока, я пошел по старинке

datas=read.csv(sales.csv", sep=";",dec=",")
View(datas)
str(datas)


count_ts = ts(datas[, c('SALES')])
View(count_ts)

datas$clean_cnt = tsclean(count_ts)



datas$cnt_ma = ma(datas$clean_cnt, order=7) # using the clean count with no outliers
datas$cnt_ma30 = ma(datas$clean_cnt, order=30)

count_ma = ts(na.omit(datas$cnt_ma), frequency=30)
decomp = stl(count_ma, s.window="periodic")
deseasonal_cnt <- seasadj(decomp)
plot(decomp)


adf.test(count_ma, alternative = "stationary") # ряд стационарный , тест Дюке-Фудллера (p<0.01)

#count_d1 = diff(deseasonal_cnt, differences = 1)

#adf.test(count_d1, alternative = "stationary") # p<0,05 is STACIONARY SERIES


auto.arima(deseasonal_cnt, seasonal=FALSE)


fit<-auto.arima(deseasonal_cnt, seasonal=FALSE)

tsdisplay(residuals(fit), lag.max=45, main='(1,1,0) Model Residuals')



fit2 = arima(deseasonal_cnt, order=c(1,1,7))


fcast <- forecast(fit2, h=30)

p2004r,теперь когда на меня нашло озорение, сможете подсказать как мне сплит по группам сделать (shop+art)



Он был сделан когда был cast() подготовлен тензор

Код
df.sales.t <- acast(df.sales, DAY ~ ART ~ STORE , value.var="SALES", fill=0)

> str(df.sales.t)
num [1:30, 1:7683, 1:30] 108 0 0 108 0 216 0 0 0 0 ...
- attr(*, "dimnames")=List of 3
  ..$ :8322456 [1:30] "2015-11-01" "2015-11-02" "2015-11-03" "2015-11-04" ...
  ..$ :8322456 [1:7683] "540" "546" "570" "738" ...
  ..$ :8322456 [1:30] "956" "958" "961" "974" ...


Первая размерность -- день серии, вторая -- артикул товара, третья -- магазин.

Соответственно берем для первого магазина, и первого артикула историю за 30 дней.

Код
> str(df.sales.t[,1,1])
Named num [1:30] 108 0 0 108 0 216 0 0 0 0 ...
- attr(*, "names")=8322456 [1:30] "2015-11-01" "2015-11-02" "2015-11-03" "2015-11-04" ...
> df.sales.t[,1,1]
2015-11-01 2015-11-02 2015-11-03 2015-11-04 2015-11-05 2015-11-06 2015-11-07
     108.0        0.0        0.0      108.0        0.0      216.0        0.0
2015-11-08 2015-11-09 2015-11-10 2015-11-11 2015-11-12 2015-11-13 2015-11-14
       0.0        0.0        0.0        0.0        0.0        0.0      108.0
2015-11-15 2015-11-16 2015-11-17 2015-11-18 2015-11-19 2015-11-20 2015-11-21
       0.0        0.0      199.8        0.0        0.0        0.0        0.0
2015-11-22 2015-11-23 2015-11-24 2015-11-25 2015-11-26 2015-11-27 2015-11-28
       0.0       92.0        0.0        0.0        0.0        0.0        0.0
2015-11-29 2015-11-30
     184.0        0.0


Но это на самом деле не весь нужный тензор, нужно обязательно добавить еще измерение по дням недели, это крайне важный фактор для модели.

Вот таким образом.

Код
> df.sales$WDAY <- lubridate::wday(df.sales$DAY)
> str(df.sales)
'data.frame':    873912 obs. of  5 variables:
$ DAY  : POSIXct, format: "2015-11-01" "2015-11-01" ...
$ STORE: int  1534 25039 1612 1053 1612 961 1602 21761 19009 22691 ...
$ ART  : int  343533 20490 295206 16406274 49495 15309949 242763 188087 16350692 86093 ...
$ SALES: num  62.5 686.4 185 32.5 143.1 ...
$ WDAY : num  1 1 1 1 1 1 1 1 1 1 ...
> df.sales.t <- acast(df.sales, DAY ~ WDAY ~ ART ~ STORE , value.var="SALES", fill=0)
> str(df.sales.t)
num [1:30, 1:7, 1:7683, 1:30] 108 0 0 0 0 0 0 0 0 0 ...
- attr(*, "dimnames")=List of 4
  ..$ :8322456 [1:30] "2015-11-01" "2015-11-02" "2015-11-03" "2015-11-04" ...
  ..$ :8322456 [1:7] "1" "2" "3" "4" ...
  ..$ :8322456 [1:7683] "540" "546" "570" "738" ...
  ..$ :8322456 [1:30] "956" "958" "961" "974" ...
  Форум: Медицинская статистика · Просмотр сообщения: #22106 · Ответов: 26 · Просмотров: 1500

p2004r
Отправлено: 1.11.2017 - 23:14


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(kont @ 1.11.2017 - 22:52) *
p2004r прогнозируются общие суммы продаж купили макароны, и куры в итоге общая выручка 200 рублей. все её и нужно спрогнозировать, но я не могу понять как прогнозировать по ежедневным данным
сможете помочь?

PS
Вы сюда точно "на охоту ходите"ТМ?
что значит эта фраза?


нет, больше чем уже помог, помочь не в силах. "теперь вся сила в гемоглобине"(С)

до свидания.
  Форум: Медицинская статистика · Просмотр сообщения: #22098 · Ответов: 26 · Просмотров: 1500

p2004r
Отправлено: 1.11.2017 - 22:48


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(kont @ 1.11.2017 - 22:37) *
переменная
mydatas=read.csv2(sales.csv)
test=ts(mydatas$SALES,frequency=365, start=c(2015, 11))


Вы действительно не видите разницы из чего делать _временной_ ряд? Даже из названия товара и магазинов вперемешку? То есть "макароны купленные на малой бронной" это один тик, а "курица на маховой" второй тик _временного_ ряда? Ничего не смущает?

PS
Вы сюда точно "на охоту ходите"ТМ? smile.gif
  Форум: Медицинская статистика · Просмотр сообщения: #22096 · Ответов: 26 · Просмотров: 1500

p2004r
Отправлено: 1.11.2017 - 22:32


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(kont @ 1.11.2017 - 22:23) *
p2004r. я воспроизвел, а предикативную модель -ку то как строить?
именно вот эту часть
testforecast=HoltWinters(test,beta=F,gamma=F)

по идеи после этого стринга
testforecast$fitted
я должен видеть нормальное предсказание)) а не то что я увидел)



Что такое у вас test?
  Форум: Медицинская статистика · Просмотр сообщения: #22093 · Ответов: 26 · Просмотров: 1500

p2004r
Отправлено: 1.11.2017 - 22:02


Дух форума
*

Группа: Пользователи
Сообщений: 1013
Регистрация: 26.08.2010
Пользователь №: 22699


Цитата(kont @ 1.11.2017 - 21:23) *
я стараюсь)
help.gif
на стаковерфлоу загуглил starting a daily time series in R

test=ts(mydat$SALES,frequency=365, start=c(2015, 11))

#Хольт-Винтерс
testforecast=HoltWinters(test,beta=F,gamma=F)


testforecast$fitted

я получаю фигню какую-то
2015.090 63.66014 63.66014
2015.093 63.69003 63.69003
2015.096 63.67381 63.67381
2015.099 63.69335 63.69335
2015.101 63.74642 63.74642
2015.104 63.75224 63.75224
2015.107 63.75847 63.75847
2015.110 63.75986 63.75986
2015.112 63.76634 63.76634
2015.115 63.81441 63.81441
2015.118 63.79887 63.79887
2015.121 63.78152 63.78152
2015.123 63.81786 63.81786
2015.126 63.88588 63.88588
2015.129 63.87830 63.87830
2015.132 63.86346 63.86346
2015.134 63.86787 63.86787
2015.137 63.86864 63.86864
2015.140 63.85490 63.85490

покажите, пожалуйста, как правильно нужно sorry.gif sad.gif help.gif
мне самому сложно


Я склоняюсь к помощи хирургическим путем smile.gif

Решейпить данные из динного формата в широкий формат довольно просто. Эту трансформацию в разные стороны обеспечивают melt() и *cast() из library(reshape2)

В данном случае у нас трех мерный тензор поэтому acast()

Код
> library(reshape2)
> str(acast(df.sales, DAY ~ STORE ~ ART , value.var="SALES", fill=0))
num [1:30, 1:30, 1:7683] 108 0 0 108 0 216 0 0 0 0 ...
- attr(*, "dimnames")=List of 3
  ..$ :8322456 [1:30] "2015-11-01" "2015-11-02" "2015-11-03" "2015-11-04" ...
  ..$ :8322456 [1:30] "956" "958" "961" "974" ...
  ..$ :8322456 [1:7683] "540" "546" "570" "738" ...

> df.sales.t <- acast(df.sales, DAY ~ ART ~ STORE , value.var="SALES")

> saveGIF(for(i in 1:30) image(df.sales.t[i,,], xlab=i), movie.name = "animation.gif", interval=0.1)


Ну и покажем анимированный срез Магазин-Асортимет по дням
Эскизы прикрепленных изображений
Прикрепленное изображение
 
  Форум: Медицинская статистика · Просмотр сообщения: #22091 · Ответов: 26 · Просмотров: 1500

41 страниц V   1 2 3 > » 

Открытая тема (есть новые ответы)  Открытая тема (есть новые ответы)
Открытая тема (нет новых ответов)  Открытая тема (нет новых ответов)
Горячая тема (есть новые ответы)  Горячая тема (есть новые ответы)
Горячая тема (нет новых ответов)  Горячая тема (нет новых ответов)
Опрос (есть новые голоса)  Опрос (есть новые голоса)
Опрос (нет новых голосов)  Опрос (нет новых голосов)
Закрытая тема  Закрытая тема
Тема перемещена  Тема перемещена