. Как рассчитать $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
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается

Вычислительная математика
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, что стало важной вехой.