Як отримати p-значення коефіцієнтів від регресії завантажувальної програми?


10

З Quick-R Роберта Кабакоффа у мене є

# Bootstrap 95% CI for regression coefficients 
library(boot)
# function to obtain regression weights 
bs <- function(formula, data, indices) {
  d <- data[indices,] # allows boot to select sample 
  fit <- lm(formula, data=d)
  return(coef(fit)) 
} 
# bootstrapping with 1000 replications 
results <- boot(data=mtcars, statistic=bs, 
     R=1000, formula=mpg~wt+disp)

# view results
results
plot(results, index=1) # intercept 
plot(results, index=2) # wt 
plot(results, index=3) # disp 

# get 95% confidence intervals 
boot.ci(results, type="bca", index=1) # intercept 
boot.ci(results, type="bca", index=2) # wt 
boot.ci(results, type="bca", index=3) # disp

Як я можу отримати p-значення коефіцієнтів регресії завантажувальної стрічки?H0:bj=0


"значення p" означає що? Який конкретний тест з якою нульовою гіпотезою?
Брайан Діггс

Виправлення H0: bj = 0
ECII

3
Ви вже отримуєте / на основі того, чи не включає / не включає інтервал довіри 0. Більш детальна інформація неможлива, оскільки розподіл параметра з завантажувального пристрою не є параметричним (і таким чином ви не можете отримати ймовірність що значення дорівнює 0). p<0.05p>0.05
Брайан Діггс

Якщо ви не можете припустити розподіл, звідки ви знаєте, що p <0,05, якщо ІП не включає 0? Це справедливо для розподілу z або t.
ECII

Я розумію, але ви можете сказати лише, що p <0,05, ви не можете привласнити певне значення?
ECII

Відповіді:


8

Ще один варіант, який є дещо спрощеним, але, думаю, доставити повідомлення без явного використання бібліотеки, bootщо може заплутати деяких людей із синтаксисом, який він використовує.

У нас є лінійна модель: ,y=Xβ+ϵϵN(0,σ2)

Далі наведено параметричний завантажувальний механізм для цієї лінійної моделі, це означає, що ми не перепробовуємо свої вихідні дані, але насправді ми генеруємо нові дані з нашої встановленої моделі. Крім того, ми припускаємо, що завантажене розподіл коефіцієнта регресії є симетричним і є інваріантним перекладом. (Дуже грубо кажучи, що ми можемо переміщувати вісь її, впливаючи на її властивості). Ідея позаду полягає в тому, що коливання пов'язані з і тому з достатньою кількістю зразків вони повинні забезпечити гарне наближення справжнього розподілу з -х. Як і раніше, ми перевіряємо знову і ми визначали наші p-значення якββϵβH0:0=βj"ймовірність, з огляду на нульову гіпотезу щодо розподілу ймовірностей даних, що результат був би таким же екстремальним, або більш крайнім, ніж спостережуваний результат" (де спостережувані результати в цьому випадку - це "", яку ми отримали для нашої оригінальної моделі). Отже, ось що:β

# Sample Size
N           <- 2^12;
# Linear Model to Boostrap          
Model2Boot  <- lm( mpg ~ wt + disp, mtcars)
# Values of the model coefficients
Betas       <- coefficients(Model2Boot)
# Number of coefficents to test against
M           <- length(Betas)
# Matrix of M columns to hold Bootstraping results
BtStrpRes   <- matrix( rep(0,M*N), ncol=M)

for (i in 1:N) {
# Simulate data N times from the model we assume be true
# and save the resulting coefficient in the i-th row of BtStrpRes
BtStrpRes[i,] <-coefficients(lm(unlist(simulate(Model2Boot)) ~wt + disp, mtcars))
}

#Get the p-values for coefficient
P_val1 <-mean( abs(BtStrpRes[,1] - mean(BtStrpRes[,1]) )> abs( Betas[1]))
P_val2 <-mean( abs(BtStrpRes[,2] - mean(BtStrpRes[,2]) )> abs( Betas[2]))
P_val3 <-mean( abs(BtStrpRes[,3] - mean(BtStrpRes[,3]) )> abs( Betas[3]))

#and some parametric bootstrap confidence intervals (2.5%, 97.5%) 
ConfInt1 <- quantile(BtStrpRes[,1], c(.025, 0.975))
ConfInt2 <- quantile(BtStrpRes[,2], c(.025, 0.975))
ConfInt3 <- quantile(BtStrpRes[,3], c(.025, 0.975))

Як уже згадувалося, вся ідея полягає в тому, що ви маєте завантажене завантаження -х наближених до їх справжнього. (Ясно, що цей код оптимізований для швидкості, але для читабельності. :))β


16

Спільнота та @BrianDiggs можуть виправити мене, якщо я помиляюся, але я вважаю, що ви можете отримати значення p для своєї проблеми наступним чином. Значення р для двостороннього тесту визначається як

2min[P(Xx|H0),P(Xx|H0)]

Отже, якщо ви замовляєте завантажені коефіцієнти за розміром, а потім визначаєте пропорції, більші та менші за нуль, мінімальна пропорція в два рази повинна дати вам p-значення.

Я зазвичай використовую таку функцію в такій ситуації:

twosidep<-function(data){
  p1<-sum(data>0)/length(data)
  p2<-sum(data<0)/length(data)
  p<-min(p1,p2)*2
  return(p)
}

4

Завантажувальний інструмент може бути використаний для обчислення p-значить, але знадобиться істотна зміна вашого коду. Оскільки я не знайомий з RI, я можу дати вам лише посилання, в якому ви можете знайти, що вам потрібно зробити: глава 4 (Davison and Hinkley, 1997).

Девісон, AC та Хінклі, DV 1997. Методи завантаження та їх застосування. Кембридж: Кембриджський університетський прес.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.