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

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

> Критерий для анализа сверхмалых выборок, выборки из 3 значений. Применение стат. анализа
Vitek_22
сообщение 25.05.2022 - 12:45
Сообщение #1





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



Салют! Столкнулся с проблемой сравнения двух выборок, в каждой из которых по 3 значения. Это результаты иммуноблоттинга (определение концентрации целевого белка в пробе) очень ценных образцов, полученных от трансгенных животных. Но их - образцов, было всего 3 для каждой из групп (2 группы: интактная и подвергнутая воздействию исследуемого фактора). Покопавшись в литературе, нашёл статьи, где есть такие выборки и авторы как ни в чём не бывало используют t-критерий Стьюдента для сравнения средних. Нашёл статьи, где используют U-критерий Манна-Уитни... Скажем так, в биологии 3 образца - это нормально для публикации, если речь идёт об особо ценном и сложнополучаемом биоматериале (к примеру как у меня, когда животные практически не дают потомства). Т.е. представить эти данные можно и не стыдно. Но вот как сравнить, как показать, что эти выборки отличаются статистически значимо, иными словами, что наш исследуемый фактор значимо повлиял на концентрацию целевого белка?
Почитал ещё о таком методе, как ресамплинг или бутстреп, когда объём выборки искусственно увеличивают. Ну, не знаю насколько это правильно... также не нашёл софт и чёткого понимания как это сделать у меня нет.
Работаю в проге Statistica 12

Посоветуйте, как всё же обработать эти данные. Вот пример исходных цифр:
Выборка 1:
221,60112
305,217725
295,251684

Выборка 2:
371,3313
397,452722
437,212724
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
comisora
сообщение 18.06.2022 - 17:49
Сообщение #2





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



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

CODE

## Создадим данные
a <- c(221.60112, 305.217725, 295.251684)
b <- c(371.3313, 397.452722, 437.212724)
ab <- c(a, b)
n <- length(ab)
g <- rep(c('a', 'b'), time = c(length(a), length(b)))

## Трансформация к диапазону (0; 1)
vec <- scales::rescale_max(ab,
from = c(
1/max(ab)/n,
max(ab)+max(ab)/n
)
)

## Бета-регрессия
fit <- betareg::betareg(vec~g)
emm <- emmeans::emmeans(fit, ~g)

## Средние и ДИ для групп
res <- data.frame(emm, row.names = 'g')[c('emmean', 'asymp.LCL', 'asymp.UCL')]
cev <- apply(res, 2, function(x) scales::rescale_max(x,
to = c(
1/max(ab)/n,
max(ab)+max(ab)/n
),
from = c(0, 1)))

## Разница средних и ДИ
ctr <- data.frame(confint(pairs(emm)))[c('estimate', 'asymp.LCL', 'asymp.UCL')]
rtc <- apply(ctr, 2, function(x) scales::rescale_max(x,
to = c(
1/max(ab)/n,
max(ab)+max(ab)/n
),
from = c(0, 1)))

## Расчёт средних в группах
set.seed(32167)
mean.a <- Hmisc::smean.cl.boot(a, B = 9999)
mean.b <- Hmisc::smean.cl.boot(b, B = 9999)
means <- rbind(cev, mean.a, mean.b)
colnames(means) <- c('mu', 'lwr', 'upr')

## Расчёт разницы средних и ДИ
set.seed(32167)
ci.bca <- confintr::ci_mean_diff(a, b, type = 'bootstrap', boot_type = 'bca')
ci.per <- confintr::ci_mean_diff(a, b, type = 'bootstrap', boot_type = 'perc')
ci.nor <- confintr::ci_mean_diff(a, b, type = 'bootstrap', boot_type = 'norm')
ci.bas <- confintr::ci_mean_diff(a, b, type = 'bootstrap', boot_type = 'basic')
fun_extr <- function(x) { #Для единообразного извлечения
estimate <- x[['estimate']]
interval <- x[['interval']]
result <- c(estimate, interval)
return(result)
}
diffs <- rbind(
beta = rtc,
bca = fun_extr(ci.bca),
perc = fun_extr(ci.per),
norm = fun_extr(ci.nor),
basic = fun_extr(ci.bas)
)
colnames(diffs) <- c('mu', 'lwr', 'upr')

## Выводим результат
summary(fit)
print(means, digits = 5)
print(diffs, digits = 5)

> Call:
betareg::betareg(formula = vec ~ g)

Standardized weighted residuals 2:
Min 1Q Median 3Q Max
-1.7892 -1.0236 0.2118 0.9816 1.5627

Coefficients (mean model with logit link):
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.1480 0.1607 0.921 0.357
gb 1.1632 0.2525 4.606 4.1e-06 ***

Phi coefficients (precision model with identity link):
Estimate Std. Error z value Pr(>|z|)
(phi) 50.91 29.16 1.746 0.0808 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Type of estimator: ML (maximum likelihood)
Log-likelihood: 8.148 on 3 Df
Pseudo R-squared: 0.7817
Number of iterations: 68 (BFGS) + 2 (Fisher scoring)
> mu lwr upr
a 273.88 233.94 313.82
b 401.80 369.21 434.40
mean.a 274.02 221.60 305.22
mean.b 402.00 371.33 437.21
> mu lwr upr
beta -127.92 -179.45 -76.395
bca -127.98 -191.06 -86.850
perc -127.98 -180.40 -78.143
norm -127.98 -180.30 -74.747
basic -127.98 -177.81 -75.553


Судя по результатам, средние и доверительные интервалы, разница средних, которые получены через бета-модель, аналогичны таковым при вычислении через бутстреп. Теперь попробуем повторить анализ для смеси распределений бета-регрессией, разными вариантами бутстрепа. Форма вывода - как у 100$.

CODE

##Дополнительные функции #fix
fun_int <- function(x) {
int <- x[['interval']]
return(int)
}
fun_res <- function(data, diff) {
len <- length(data)
res <- vapply(X = 1:n, FUN.VALUE = logical(1),
function(i) {
cond <- diff>data[[i]][1] & diff<data[[i]][2]
return(cond)
}
)
pr <- sum(res)/len
sums <- rowMeans(simplify2array(data))
res <- list(low = sums[1], up = sums[2], l = abs(sums[1]-sums[2]), prob = pr)
return(res)
}

x <- c(221.60112, 305.217725, 295.251684)
y <- c(371.3313, 397.452722, 437.212724)
mu_x <- mean(x)
mu_y <- mean(y)
len_x <- length(x)
sd_x <- sd(x)
sd_y <- sd(y)
len_y <- length(y)
diff <- mu_x-mu_y
len <- len_x+len_y
g <- rep(c('x', 'y'), time = c(len_x, len_y))
idx <- c('asymp.LCL', 'asymp.UCL')

n <- 1000
res <- vector(mode = 'logical', length = n)

set.seed(32167)
x_sim <- replicate(n,
c(
rnorm(round(len_x*2/3), mu_x, sd_x*1/3),
rnorm(round(len_x*1/3), mu_x, sd_x*2/3*2.5)
)
)
y_sim <- replicate(n,
c(
rnorm(round(len_x*2/3), mu_y, sd_y*1/3),
rnorm(round(len_x*1/3), mu_y, sd_y*2/3*2.5)
)
)
xy_sim <- rbind(x_sim, y_sim)
vec_sim <- apply(xy_sim, 2, function(i) scales::rescale_max(i,
from = c(
1/max(i)/len,
max(i)+max(i)/len
)
))

ci_beta <- lapply(
X = 1:n, FUN = function(i) {
fit <- betareg::betareg(vec_sim[,i]~g)
ci <- as.numeric(confint(pairs(emmeans::emmeans(fit, ~g)))[idx])
ic <- scales::rescale_max(ci,
to = c(
1/max(xy_sim[,i])/len,
max(xy_sim[,i])+max(xy_sim[,i])/len
),
from = c(0, 1)
)
return(ic)
})
ci_bca <- lapply(
X = 1:n, FUN = function(i) {
fit <- confintr::ci_mean_diff(x_sim[,i], y_sim[,i],
type = 'bootstrap', boot_type = 'bca', R = n)
ci <- fun_int(fit)
return(ci)
})
ci_perc <- lapply(
X = 1:n, FUN = function(i) {
fit <- confintr::ci_mean_diff(x_sim[,i], y_sim[,i],
type = 'bootstrap', boot_type = 'perc', R = n)
ci <- fun_int(fit)
return(ci)
})
ci_norm <- lapply(
X = 1:n, FUN = function(i) {
fit <- confintr::ci_mean_diff(x_sim[,i], y_sim[,i],
type = 'bootstrap', boot_type = 'norm', R = n) #fix
ci <- fun_int(fit)
return(ci)
})
ci_basic <- lapply(
X = 1:n, FUN = function(i) {
fit <- confintr::ci_mean_diff(x_sim[,i], y_sim[,i],
type = 'bootstrap', boot_type = 'basic', R = n) #fix
ci <- fun_int(fit)
return(ci)
})
vct <- ls(pattern = 'ci_')

res_ci <- t(simplify2array(lapply(1:length(vct), function(i) {
#do.call(fun_res, list(data = get(vct[i]), diff = get('diff')))
fun_res(data = get(vct[i]), get('diff')) #fix
})))
row.names(res_ci) <- vct
print(res_ci, digits = 5) # fix

low up l prob
ci_basic -173.1 -81.769 91.328 0.885
ci_bca -176.03 -81.595 94.435 0.773
ci_beta -172.44 -79.885 92.552 0.866
ci_norm -174 -80.332 93.666 0.876
ci_perc -172.38 -81.104 91.271 0.814



Сообщение отредактировал comisora - 18.06.2022 - 21:58
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Сообщений в этой теме
- Vitek_22   Критерий для анализа сверхмалых выборок   25.05.2022 - 12:45
- - Игорь   В принципе любая непараметрика. Можно посмотреть к...   26.05.2022 - 08:42
|- - salm   Цитата(Игорь @ 26.05.2022 - 08:42) В...   24.02.2023 - 13:32
|- - ИНО   В указанных критериях объемы выборок, учитывается ...   24.02.2023 - 14:47
||- - salm   Цитата(ИНО @ 24.02.2023 - 14:47) В у...   24.02.2023 - 20:55
||- - 100$   > Спасибо. А в принципе, такое выражение ...   24.02.2023 - 23:32
|- - Игорь   Цитата(salm @ 24.02.2023 - 14:32) Зд...   24.02.2023 - 17:37
|- - salm   Цитата(Игорь @ 24.02.2023 - 17:37) Е...   24.02.2023 - 20:47
|- - ИНО   Цитата(salm @ 24.02.2023 - 20:47) А ...   25.02.2023 - 05:37
|- - Игорь   Удалено автором поста.   1.03.2023 - 10:25
- - Vitek_22   Игорь, спасибо. А как обосновать использование это...   26.05.2022 - 10:41
|- - 100$   Цитата(Vitek_22 @ 26.05.2022 - 10:41...   26.05.2022 - 17:46
|- - Игорь   Цитата(Vitek_22 @ 26.05.2022 - 10:41...   31.05.2022 - 07:07
- - ИНО   Вот-только при помощи перестановок Вы никогда не д...   5.06.2022 - 23:55
- - Игорь   Цитата(Vitek_22 @ 25.05.2022 - 13:45...   9.06.2022 - 13:53
|- - 100$   Цитата(Игорь @ 9.06.2022 - 13:53) Кр...   9.06.2022 - 16:17
|- - ИНО   Цитата(100$ @ 9.06.2022 - 16:17...   9.06.2022 - 23:21
|- - 100$   Цитата(ИНО @ 9.06.2022 - 23:21) Поче...   10.06.2022 - 10:08
- - ИНО   Сдается мне, Ваше творение нагло врет, по крайней ...   9.06.2022 - 16:05
- - Игорь   Спасибо коллегам за подробный разбор. Проверил. Сн...   9.06.2022 - 20:08
- - ИНО   ЦитатаГрубо говоря - одно и то же. Исправлять нече...   9.06.2022 - 22:28
|- - Игорь   Цитата(ИНО @ 9.06.2022 - 22:28) Одна...   10.06.2022 - 13:15
- - ИНО   Очевидно, сии подделки экселя прозрачно намекают, ...   10.06.2022 - 14:00
- - ИНО   Почитал мануал ПАСТа, относительно "permutati...   11.06.2022 - 15:09
|- - 100$   Цитата(ИНО @ 11.06.2022 - 15:09) Пол...   12.06.2022 - 12:43
- - ИНО   ЦитатаА это разовое значение (в смысле, полученное...   13.06.2022 - 19:29
- - nokh   Цитата(Vitek_22 @ 25.05.2022 - 14:45...   17.06.2022 - 07:34
|- - ИНО   Цитата(nokh @ 17.06.2022 - 07:34) Мо...   17.06.2022 - 13:17
|- - 100$   Цитата(ИНО @ 17.06.2022 - 13:17) ......   17.06.2022 - 13:26
- - 100$   ЦитатаНе знаю почему уважаемые участники форума не...   17.06.2022 - 12:13
- - ИНО   Хороший вопрос! Документация пакета boot (свер...   17.06.2022 - 17:12
|- - 100$   Цитата(ИНО @ 17.06.2022 - 17:12) Выв...   18.06.2022 - 01:12
- - ИНО   Ну что поделать, я не умею толком ни программирова...   18.06.2022 - 01:54
- - comisora   Добрый день. Предлагаю рассмотреть на жизнеспособн...   18.06.2022 - 17:49
- - ИНО   ИМХО бета тут как бы совсем за уши притянута, огра...   18.06.2022 - 18:17
- - comisora   2ИНО Ошибки исправил, результат тоже, спасибо. По...   18.06.2022 - 19:12
- - 100$   >comisora, а вы можете откомментировать констр...   18.06.2022 - 21:26
- - comisora   2 100$ Конечно. Это я усложнил код, так как ...   18.06.2022 - 23:53
|- - 100$   Цитата(comisora @ 18.06.2022 - 23:53...   19.06.2022 - 00:16
- - 100$   Подведем некоторые промежуточные итоги. В соответ...   19.06.2022 - 22:20
- - comisora   2 100$ У меня опыта создания пакетов нет (да...   20.06.2022 - 00:42
- - ИНО   Цитата(100$ @ 19.06.2022 - 22:2...   20.06.2022 - 04:56
|- - 100$   "Я проснулся сегодня рано..." (Исполняет...   20.06.2022 - 13:01
- - ИНО   Нет, на той гистограмме - распределение при нулево...   20.06.2022 - 17:10
|- - 100$   ЦитатаНет, на той гистограмме - распределение при ...   20.06.2022 - 23:24
- - ИНО   Да все в порядке изначально было с гистограммой ст...   21.06.2022 - 03:31
|- - 100$   ЦитатаС этим не спорю. Заметьте, здесь порядок циф...   21.06.2022 - 12:21
- - ИНО   Ну, результаты моделирования как бы намекают, что ...   21.06.2022 - 21:00
|- - 100$   Цитата(ИНО @ 21.06.2022 - 21:00) А в...   23.06.2022 - 00:19
- - comisora   Цитата(100$ @ 21.06.2022 - 12:2...   22.06.2022 - 10:42
- - ИНО   Этот ответ справедлив только для критериев рандоми...   23.06.2022 - 04:56
- - 100$   Но, если уж на то пошло, для желаемого соотношения...   23.06.2022 - 11:10
- - salm   Добрый день. пожалуйста, у меня есть парные измер...   12.01.2023 - 11:51
|- - 100$   Цитата(salm @ 12.01.2023 - 11:51) До...   12.01.2023 - 13:39
|- - salm   Цитата(100$ @ 12.01.2023 - 13:3...   12.01.2023 - 16:09
- - ИНО   Проблема множественных сравнений отнюдь не исчерпы...   1.03.2023 - 12:35
|- - Игорь   Удалено автором поста.   1.03.2023 - 20:24
- - ИНО   Пример 1. Почему у Смирнова мощность значительно м...   2.03.2023 - 07:16
|- - Игорь   Удалено автором поста.   2.03.2023 - 07:39
- - ИНО   Так-то оно так, вот только для перестраховки приня...   2.03.2023 - 10:06
- - ИНО   Причем тут смежные области? Вопрос лежит сугубо в ...   2.03.2023 - 11:51
- - Vitek_22   Господа, я что-то совсем позабыл выложить пример. ...   8.08.2025 - 00:33
|- - Игорь   Цитата(Vitek_22 @ 8.08.2025 - 01:33)...   8.08.2025 - 07:38
- - ИНО   Если я правильно понял задачу, то получить p<0...   8.08.2025 - 18:26
- - Vitek_22   тов. Игорь, можете привести эти две выборки по 3 з...   8.08.2025 - 20:53
|- - Игорь   Цитата(Vitek_22 @ 8.08.2025 - 21:53)...   9.08.2025 - 10:01
- - ИНО   Признаю свою неправоту. Хотя она не столкьо моя, с...   8.08.2025 - 21:21
- - Vitek_22   Тов. Игорь, в статье. что я приложил объём выборок...   9.08.2025 - 13:02
|- - Игорь   Цитата(Vitek_22 @ 9.08.2025 - 14:02)...   9.08.2025 - 15:58
- - ИНО   Дело не в мощности. Мощность критерия - функция, з...   9.08.2025 - 17:51
- - ИНО   RE: Критерий для анализа сверхмалых выборок   9.08.2025 - 18:24
- - ИНО   Один неприятный технический момент, который можно ...   9.08.2025 - 18:34
- - Игорь   Удалено автором поста.   10.08.2025 - 18:41
- - ИНО   Я выложил распределение статистики. Постройте гист...   11.08.2025 - 12:32
|- - Игорь   Удалено автором поста.   11.08.2025 - 19:16
- - ИНО   То есть слово "exact" в выдаче Вы в упор...   11.08.2025 - 20:52
- - ИНО   ЦитатаStudent test (location): two sided p = 0.019...   11.08.2025 - 21:06
|- - Игорь   Удалено автором поста.   11.08.2025 - 21:56
- - ИНО   Скачал Руниона этого. Алгоритм, который он предлаг...   11.08.2025 - 22:13
- - ИНО   Цитата(Игорь @ 11.08.2025 - 21:56) У...   11.08.2025 - 22:25
- - Игорь   Удалено автором поста.   12.08.2025 - 13:29
- - ИНО   R правильно считает. StatXact, наверное, тоже счи...   12.08.2025 - 21:52
|- - Игорь   Удалено автором поста.   13.08.2025 - 11:44
- - ИНО   Вы неверно считаете двустороннее. Что есть односто...   13.08.2025 - 13:55
|- - Игорь   Удалено автором поста.   14.08.2025 - 07:10
- - ИНО   Вот именно двустороннее и неверное, к односторонни...   14.08.2025 - 17:40
|- - Игорь   Удалено автором поста   15.08.2025 - 09:21
- - ИНО   Только что совершенно случайно в процессе чтения с...   14.08.2025 - 18:01
- - ИНО   Игорь, полагаю, откуда и как установить R или еще ...   15.08.2025 - 13:48
|- - Игорь   Удалено автором поста.   15.08.2025 - 14:31
- - ИНО   Если Вы считаете слово "творения" оскорб...   16.08.2025 - 13:13
- - Игорь   Думаю, что мы немного погорячились. Да и я, винова...   26.08.2025 - 19:58
- - ИНО   Тогда и меня простите. Но это касается исключитель...   26.08.2025 - 23:54
|- - Игорь   Цитата(ИНО @ 27.08.2025 - 00:54) Во-...   27.08.2025 - 08:09
- - ИНО   Ну все ж хотелось бы докопаться до истины - какой ...   27.08.2025 - 16:26
- - Игорь   В комментариях исходников coin есть названия источ...   4.09.2025 - 19:12


Добавить ответ в эту темуОткрыть тему