P xy p x p y: probability — Compute P(XY) given P(x) and P(y)

Вероятность

. Как рассчитать $P(X > Y)$?

спросил

Изменено 3 года, 1 месяц назад

Просмотрено 2к раз

$\begingroup$

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

Имея две случайные величины $X$ и $Y$ с известными функциями распределения вероятностей (не обязательно нормальными), как я могу вычислить $P(X > Y)$? Численное решение было бы хорошо, я просто не могу найти никакой информации по этой теме.

Можно ли в качестве возможного наивного решения сказать, что $P(X — Y > 0) = P(X > Y)$ вообще или при известных ограничениях?

  • вероятность

$\endgroup$

1

$\begingroup$

Если у вас есть совместное распределение $(X,Y)$, то по определению

\begin{align} P(X>Y)&=E[I_{X>Y}] \\&=\begin{cases}\sum\sum_{i>j}P(X=i,Y=j)&,\small\text{ if } (X,Y)\text{ является дискретным, имеющим pmf } \\\iint_{x>y}f_{X,Y}(x,y)\,dx\,dy&,\small\text{, если }(X,Y)\text{ абсолютно непрерывен с pdf }f_{ X,Y}\end{случаи} \end{align}

Это определение недействительно для смешанных случайных величин или если $(X,Y)$ не имеет pmf/pdf.

Предположение о независимости и/или одинаковом распределении $X$ и $Y$ делает возможным дальнейшее упрощение. При независимости совместная PMF (PDF) факторизуется как произведение предельных PMF (PDF). В частности, если $X$ и $Y$ — независимые и одинаково распределенные непрерывные случайные величины, то $P(X>Y)=1/2$, как указано в комментариях.

И, конечно, поскольку $P(X>

Y)=P(X-Y>0)$, если вы можете найти распределение $X-Y$ из совместного распределения $X$ и $Y$, то эта вероятность может быть вычислено.

$\endgroup$

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Вычислительная математика

 Y <- train$SalePrice
X <- поезд$LotArea

px <- квантиль (X) [4]
p.y <- квантиль (Y)[2]

# а. Р(Х>х | У>у)
px <- train %>% filter(LotArea > p.x & SalePrice > p.y) %>%
        подсчет () / nrow (поезд)
py <- train%>% filter(SalePrice > p.y) %>%
        подсчет () / nrow (поезд)
(px/py) 
 ## n
## 1 0.3123288 
 # б. Р(Х>х, У>у)
px <- поезд %>% filter(LotArea > p.x) %>%
        подсчет () / nrow (поезд)
py <- train%>% filter(SalePrice > p.y) %>%
        подсчет () / nrow (поезд)
(пкс*пи) 
 ## п
## 1 0,1875 
# в. Р(Х<х | У>у) px <- train %>% filter(LotArea < p.x & SalePrice > p.y) %>% подсчет () / nrow (поезд) py <- train%>% filter(SalePrice > p.y) %>% подсчет () / nrow (поезд) (px/py)
 ## n
## 1 0.6876712 

Делает ли такое разделение обучающих данных независимыми? Другими словами, P(XY)=P(X)P(Y) или P(X|Y) = P(X)? Проверьте математически, а затем оцените, запустив тест хи-квадрат на наличие ассоциации. Возможно, вам придется изучить это. Тест Хи-квадрат на независимость (ассоциацию) потребует от вас разбить данные на логические группы.

Ниже я проверю, если P(X|Y) = P(X)

 # используйте пример a. P(X>x | Y>y) как P(X|Y)
Y <- поезд$Цена продажи
X <- поезд$LotArea

px <- квантиль (X) [4]
p.y <- квантиль (Y)[2]

px <- train %>% filter(LotArea > p.x & SalePrice > p.y) %>%
        подсчет () / nrow (поезд)
py <- train%>% filter(SalePrice > p.y) %>%
        подсчет () / nrow (поезд)
p.xy <- px/py

#П(Х)
px <- поезд %>
% filter(LotArea > p.x) %>% подсчет () / nrow (поезд) ру <- поезд %>% подсчет () / nrow (поезд) px <- px/py (п.ху == п.х)
 ## п
## [1,] FALSE 

P(X|Y) = P(X) будет истинным только тогда, когда p(X|Y = y) = p(X) для всех y, в приведенных выше примерах расщепления Y было не для всех y, так что разделение тренировочного дагта на а-в таким образом не делает их независимыми.

 # критерий хи-квадрат
chi. test <- таблица (train $ SalePrice, train $ LotArea)
chisq.test(chi.test) 
 ## Предупреждение в chisq.test(chi.test): аппроксимация хи-квадрат может быть неверной 
 ##
## критерий хи-квадрат Пирсона
##
## данные: chi.test
## Х-квадрат = 735090, df = 709660, значение p < 2,2e-16 

На основании результатов теста хи-квадрат, значение p < 0,05, нулевая гипотеза об отсутствии связи между SalePrice и LotArea была отклонена.

Описательная и выводная статистика

Обеспечьте одномерную описательную статистику и соответствующие графики для обеих переменных. Предоставьте диаграмму рассеивания X и Y. Преобразуйте обе переменные одновременно, используя преобразования Бокса-Кокса. Возможно, вам придется изучить это. Используя преобразованные переменные, запустите корреляционный анализ и интерпретируйте. Проверьте гипотезу о том, что корреляция между этими переменными равна 0, и дайте 99% доверительный интервал. Обсудите смысл вашего анализа.

 # Цена продажи
сводка(train$SalePrice) 
 ## Мин.  1 кв. Медиана Среднее 3-е кв. Максимум.
## 34900 129975 163000 180921 214000 755000 
 # LotArea
сводка(train$LotArea) 
 ## Мин. 1 кв. Медиана Среднее 3-е кв. Максимум.
## 1300 7554 9478 10517 11602 215245 
 гребенка <- data.frame(SalePrice = train$SalePrice, LotArea = train$LotArea)
сюжет (поезд $ LotArea, поезд $ цена продажи)
yx.lm <- lm(train $SalePrice ~ train$LotArea)
линии (train $ LotArea, прогноз (yx.lm), col = "красный") 

 # медианы Y и X
salePrice.median <-median(Y)
lotArea.median <-медиана (X)

#Создать график плотности для переменной LotArea.
# плотность SalePrice
ggplot (поезд, aes (x = SalePrice)) +
  geom_vline (xintercept = salePrice.median, col = "зеленый", lwd = 1) +
  geom_density (настройка = 5, col = 'темно-синий') +
  labs(title="Плотность и медианная цена продажи") +
  labs(x="SalePrice", y="") 

 # плотность X
ggplot (поезд, aes (x = LotArea)) +
  geom_vline (xintercept = lotArea. median, col = "зеленый", lwd = 1) +
  geom_density (настройка = 5, col = 'темно-синий') +
  labs(title="Плотность и медиана для LotArea") +
  лаборатории(x="LotArea", y="") 

 # преобразование переменных с использованием преобразований Бокса-Кокса
SalePrice.lam <- BoxCox.lambda(train$SalePrice)
trans.SalePrice <- BoxCox(train$SalePrice, SalePrice.lam)
hist(trans.SalePrice) 

 LotArea.lam <- BoxCox.lambda(train$LotArea)
trans.LotArea <- BoxCox(train$LotArea, LotArea.lam)
hist(trans.LotArea) 

Проверка гипотезы с использованием преобразованных переменных LotArea и SalePrice для демонстрации связи между ними

 (cor(cbind(trans.LotArea, trans.SalePrice))) 
 ## trans.LotArea trans.SalePrice
## транс.LotArea 1.0000000 0.3893308
## trans.SalePrice 0.3893308 1.0000000 
 (cor.test(trans.LotArea, trans.SalePrice, method = "pearson", conf.level = .99)) 
 ##
## Корреляция продукта и момента Пирсона
##
## данные: trans.
LotArea и trans.SalePrice ## t = 16,14, df = 1458, значение p < 2,2e-16 ## альтернативная гипотеза: истинная корреляция не равна 0 ## 99-процентный доверительный интервал: ## 0,3306244 0,4450358 ## примерные оценки: ## кор ## 0.3893308
 (cor.test(train$LotArea, train$SalePrice, method = "pearson", conf.level = .99)) 
 ##
## Корреляция продукта и момента Пирсона
##
## данные: train$LotArea и train$SalePrice
## t = 10,445, df = 1458, p-значение < 2,2e-16
## альтернативная гипотеза: истинная корреляция не равна 0
## 99-процентный доверительный интервал:
## 0.2000196 0,3254375
## примерные оценки:
## кор
## 0.2638434 

Приведенные выше 2 корреляционных теста показали положительную связь между переменными LotArea и SalePrice до и после преобразования на уровне достоверности 99%, и связь стала сильнее после преобразования переменных.

Линейная алгебра и корреляция.

Инвертируйте матрицу корреляции из предыдущего раздела. (Это называется матрицей точности и содержит коэффициенты увеличения дисперсии по диагонали.

) Умножьте матрицу корреляции на матрицу точности, а затем умножьте матрицу точности на матрицу корреляции.

 (matr <- cor(cbind(trans.LotArea, trans.SalePrice))) 
 ## trans.LotArea trans.SalePrice
## транс.LotArea 1.0000000 0.3893308
## trans.SalePrice 0.3893308 1.0000000 
 (invM <- решить(матр)) 
 ## trans.LotArea trans.SalePrice
## транс.LotArea 1.1786593 -0.4588883
## trans.SalePrice -0,4588883 1,1786593 
 (matr %*% invM) 
 ## trans.LotArea trans.SalePrice
## транс.LotArea 1.000000e+00 0
## trans.SalePrice 5.551115e-17 1 
 (invM %*% matr) 
 ## trans.LotArea trans.SalePrice
## транс.LotArea 1.000000e+00 0
## trans.SalePrice 5.551115e-17 1 

PreProcess

 # настроить обучающие и тестовые наборы данных
поезд$IsTrainSet <- ИСТИНА
test$IsTrainSet <- ЛОЖЬ
df <- rbind (поезд, тест)

# проверка отсутствующего значения
Num_NA <- sapply(df, function(y)
  длина (которая (является.
na (y) == T))) NA_Count <- data.frame (Item = colnames (df), Count = Num_NA) col_rm <- NA_Count$Count> 1500 # удаляем переменные с большими отсутствующими значениями выше 1500 дф <- дф[ !col_rm] # числовые переменные и передача дамм isnum <- sapply (df, is.numeric) dfnum <- df[ isnum] тусклый (dfnum)
 ## [1] 2919 38 
 # преобразовать значения факторов в числа
для (я в 1:76) {
  если (is.factor (df [ i])) {
    df[i]<-as.integer(df[i])
  }
}

# заменить отсутствующее значение на 0
дф[ис.на(дф)] <- 0
dfnum[is.na(dfnum)] <- 0

# Описательный анализ, определение коррелированных предикторов
descrCor <- cor(dfnum, use = "pairwise.complete.obs")
# коррупция
коррупция(
  описание,
  метод = "круг",
  тип = "нижний",
  сиг.уровень = 0,01,
  insig = "пусто"
) 

 # удалить дескрипторы с абсолютной корреляцией > 0,75
(highlyCorDescr <- findCorrelation(descrCor, cutoff = .75)) 
 ## [1] 17 14 27 
 # 37 — это SalePrice, выбранная как зависимая переменная, удалите высококорреляционную переменную 4
dfnum <- dfnum[ -c(4, highCorDescr[-1])]
descrCor2 <- cor(dfnum)
summary(descrCor2[upper. tri(descrCor2)]) 
 ## Мин. 1 кв. Медиана Среднее 3-е кв. Максимум.
## -0,740 -0,019 0,023 0,0690,130 0,808 
 # корп.
коррупция(
  дескркор2,
  метод = "круг",
  тип = "нижний",
  сиг.уровень = 0,01,
  insig = "пусто"
) 

 # переменные графика, которые тесно связаны с SalePrice
пары(~SalePrice+TotalBsmtSF+GarageArea+BsmtFullBath+TotRmsAbvGrd+BedroomAbvGr,data=dfnum,
      main="Матрица рассеяния") 

 # удалить линейные зависимости
lincomb = findLinearCombos (dfnum)
lapply(lincomb$linearCombos, function(x) colnames(dfnum)[x]) 
 ## [[1]]
## [1] "TotalBsmtSF" "BsmtFinSF1" "BsmtFinSF2" "BsmtUnfSF" 
 dfnum <- dfnum[-lincomb$remove]
dim(dfnum) 
 ## [1] 2919 34 
 # категориальное приведение
dfchar <- df[ !isnum]
dim(dfchar) 
 ## [1] 2919 40 
 dfchar[] <- lapply(dfchar, factor)

# Выбор характеристик Boruta
set.seed(121)
if (!require('Boruta')) install. packages('Boruta') 
 ## Загрузка требуемого пакета: Boruta 
 ## Загрузка необходимого пакета: библиотека ranger 
 (Boruta)
sel.var <- cbind(dfnum[ -c(1)], dfchar)
поезд <- sel.var[sel.var$IsTrainSet == TRUE, ]
тест <- sel.var[sel.var$IsTrainSet == FALSE, ]

на.омить(поезд)->хво
bor.results <- Борута(hvo[ -37],
                      hvo$ПродажаЦена,
                      # maxRuns=101,
                      делать трассировку = 0)

boruta.train <- TentativeRoughFix(bor.results)

сюжет (boruta.train, xlab = "", xaxt = "n")
lz<-lapply(1:ncol(boruta.train$ImpHistory),функция(i)
boruta.train$ImpHistory[is.finite(boruta.train$ImpHistory[i]),i])
имена(lz) <- colnames(boruta.train$ImpHistory)
Метки <- sort(sapply(lz,median))
ось (сторона = 1, las = 2, метки = имена (метки), at = 1: ncol (boruta.train $ ImpHistory), cex.axis = 0,7) 

 keepMe <- getSelectedAttributes(boruta.train, withTentative = F)

myvars_train <- имена (поезд) %in% keepMe
myvars_test <- имена (тест) %in% keepMe

поезд <- поезд[myvars_train]
тест <- тест[myvars_test]
test$Id <- testId 

Выбор модели и обучение

 # прогноз

# переменная Exterior1st имеет разные уровни в тестовом наборе данных и в наборе данных для обучения, поэтому используйте набор данных для обучения
# удалить Id и IsTrainSet
train[] <- sapply(train, as. numeric)
lm_model <- lm(SalePrice ~ ., data = train)

резюме (lm_model) 
 ##
## Вызов:
## lm(formula = SalePrice ~ ., data = train)
##
## Остатки:
## Мин. 1 кв. Медиана 3 кв. Макс.
## -489752 -14139 -1583 13293 270617
##
## Коэффициенты:
## Оценить стандарт. Значение ошибки t Pr(>|t|)
## (Пересечение) -4,70e+05 1,63e+05 -2,87 0,0041 **
## MSSubClass -1.10e+02 4.61e+01 -2.38 0.0175 *
## LotFrontage -1,74e+01 2,85e+01 -0,61 0,5406
## Общее качество 1.33e+04 1.19е+03 11,18 < 2е-16***
## Общее состояние 5.29e+03 1.03e+03 5.11 3.7e-07 ***
## YearBuild 2.27e+02 7.29e+01 3.11 0.0019 **
## YearRemodAdd 4.20e+01 6.80e+01 0,62 0,5368
## MasVnrArea 3.01e+01 6.15e+00 4.89 1.1e-06 ***
## BsmtFinSF1 1.14e+01 4.69e+00 2.43 0.0152 *
## BsmtUnfSF 6.57e+00 4.67e+00 1.41 0.1600
## X2ndFlrSF 2.60e+00 5.51e+00 0,47 0,6374
## GrLivArea 4.21e+01 5.52e+00 7.63 4.2e-14 ***
## BsmtFullBath 1.03e+04 2.34e+03 4.40 1.1e-05 ***
## FullBath 5.96e+03 2,74e+03 2,18 0,0295 *
## HalfBath 2. 20e+03 2.60e+03 0,85 0,3966
## BedroomAbvGr -4,29e+03 1,70e+03 -2,52 0,0117 *
## KitchenAbvGr -1,53e+04 5,10e+03 -3,01 0,0027 **
## TotRmsAbvGrd 3.19e+03 1.19e+03 2.68 0.0074 **
## Камины 1.17e+04 2.66e+03 4.38 1.3e-05 ***
## GarageYrBlt 1.36e-01 5.93e+00 0,02 0,9817
## GarageArea 3.27e+01 6.69e+00 4.89 1.2e-06 ***
## WoodDeckSF 2.08e+01 7.54e+00 2,76 0,0059**
## OpenPorchSF -1.21e+01 1.46e+01 -0.83 0.4049
## MSZoning -1.01e+03 1.53e+03 -0.66 0.5110
## LotShape -1.33e+03 6.81e+02 -1.96 0.0504 .
## Окрестности 2.51e+02 1.61e+02 1.56 0.1190
## Условие1 -2.10e+02 1.03e+03 -0.20 0.8393
## Тип здания -2,26e+03 1,51e+03 -1,50 0,1336
## HouseStyle -1,42e+03 6,58e+02 -2,15 0,0315 *
## RoofStyle 2.35e+03 1.15e+03 2.05 0.0409*
## Внешний 1-й -7,77e+02 5,35e+02 -1,45 0,1465
## Внешний 2-й 1,77e+02 4,85e+02 0,37 0,7150
## MasVnrType 3.35e+03 1.52e+03 2.21 0.0275 *
## ExterQual -8.16e+03 1.98e+03 -4.12 4.1e-05 ***
## Фундамент -4,45e+02 1,71e+03 -0,26 0,7955
## BsmtQual -6,58e+03 1,33e+03 -4,94 9,0e-07 ***
## BsmtCond 4. 19e+03 1.28e+03 3.27 0.0011 **
## BsmtExposure -3.48e+03 8.86e+02 -3.93 9.0e-05 ***
## BsmtFinType1 -6.07e+02 6.35e+02 -0.96 0,3393
## BsmtFinType2 1.14e+03 1.00e+03 1.14 0.2562
## ОтоплениеQC -4,63e+02 6,27e+02 -0,74 0,4599
## ЦентралЭйр 2.33e+03 4.37e+03 0,53 0,5947
## Электрический -4,35e+02 9,33e+02 -0,47 0,6411
## KitchenQual -7.90e+03 1.49e+03 -5.30 1.3e-07 ***
## КаминQu -1,84e+03 8,09e+02 -2,28 0,0230 *
## GarageType 1.27e+01 6.53e+02 0,02 0,9845
## GarageFinish -1.80e+03 1.52e+03 -1.18 0.2371
## GarageQual -6,77e+02 1,82e+03 -0,37 0,7100
## GarageCond 4.45e+01 2.06e+03 0,02 0,9828
## PavedDrive 2,75e+03 2,13e+03 1,29 0,1969
## ---
## Значение. коды: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1
##
## Остаточная стандартная ошибка: 32900 на 1410 степенях свободы
## Множественный R-квадрат: 0,834, скорректированный R-квадрат: 0,828
## F-статистика: 144 на 49 и 1410 DF, значение p: <2e-16 
 aov(lm_model) 
 ## Вызов:
## aov(формула = lm_model)
##
## Условия:
## MSSubClass LotFrontage Общее качество Общее Cond YearBuild
## Сумма квадратов 6. 54e+10 3.54e+11 5.47e+12 7.37e+08 8.37e+10
## град. свободы 1 1 1 1 1
## YearRemodAdd MasVnrArea BsmtFinSF1 BsmtUnfSF X2ndFlrSF
## Сумма квадратов 2.30e+10 2.46e+11 2.40e+11 4.95е+10 3,57е+11
## град. свободы 1 1 1 1 1
## GrLivArea BsmtFullBath FullBath HalfBath BedroomAbvGr
## Сумма квадратов 3.68e+11 2.64e+10 9.54e+08 4.82e+07 4.17e+10
## град. свободы 1 1 1 1 1
## KitchenAbvGr TotRmsAbvGrd Камины GarageYrBlt
## Сумма квадратов 4.88e+09 2.43e+10 1.55e+10 1.34e+08
## град. свободы 1 1 1 1
## GarageArea WoodDeckSF OpenPorchSF MSЗонирование LotShape
## Сумма квадратов 4.98e+10 1.34e+10 2.88e+08 1.73e+09 6.12e+09
## град. свободы 1 1 1 1 1
## Соседство Condition1 BldgType HouseStyle RoofStyle
## Сумма квадратов 2.83e+09 9.15e+07 1.03e+09 6.63e+09 6.14e+09
## град. свободы 1 1 1 1 1
## Exterior1st Exterior2nd MasVnrType ExterQual Foundation
## Сумма квадратов 4.84e+09 4.57e+08 2.20e+10 7.03e+10 1.57e+09## град. свободы 1 1 1 1 1
## BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinType2
## Сумма квадратов 3. 84e+10 1.20e+10 1.77e+10 6.03e+08 1.40e+09
## град. свободы 1 1 1 1 1
## ОтоплениеQC CentralAir Electric KitchenQual FireplaceQu
## Сумма квадратов 1.90e+09 6.30e+06 9.84e+08 3.39e+10 5.20e+09
## град. свободы 1 1 1 1 1
## GarageType GarageFinish GarageQual GarageCond PavedDrive
## Сумма квадратов 6.14e+07 1.37e+091.34e+08 1.44e+07 1.81e+09
## град. свободы 1 1 1 1 1
## Остатки
## Сумма квадратов 1.53e+12
## град. Свободы 1410
##
## Остаточная стандартная ошибка: 32944
## Оценочные эффекты могут быть несбалансированными 
 test$SalePrice <- 0
 
test[] <- sapply(test, as.numeric)
myPred <- прогноз (lm_model, новые данные = тест [ -51])

отправить <- data.frame(Id = test$Id, SalePrice = myPred)
write.csv(отправить, файл = "SalePricePred.csv", row.names = FALSE) 

Представление Kaggle

Подпись к картинке.

Заключение:

В этом финальном проекте я многому научился, объединив математику, вероятность и моделирование. Из-за нехватки времени я не смог изучить больше моделей, но я впервые использовал Caret и некоторые другие пакеты и отправил результаты прогнозирования в Kaggle, что стало важной вехой.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *