แบคทีเรียหยิบขึ้นมาบนนิ้วมือหลังจากสัมผัสพื้นผิวหลายครั้ง: ข้อมูลที่ไม่ปกติการวัดซ้ำผู้เข้าร่วมข้าม


9

Intro

ฉันมีผู้เข้าร่วมที่สัมผัสพื้นผิวที่ปนเปื้อนด้วยเชื้ออีโคไลในสองเงื่อนไข ( A = สวมถุงมือB = ไม่มีถุงมือ) ฉันต้องการทราบว่ามีความแตกต่างระหว่างปริมาณของแบคทีเรียที่ปลายนิ้วของพวกเขาด้วยและไม่ต้องใส่ถุงมือ แต่ยังรวมถึงจำนวนผู้ติดต่อด้วย ปัจจัยทั้งสองนี้มีส่วนร่วมภายใน

วิธีการทดลอง:

ผู้เข้าร่วม (n = 35) แตะที่ช่องสี่เหลี่ยมหนึ่งครั้งด้วยนิ้วเดียวกันสำหรับผู้ติดต่อได้สูงสุด 8 ราย (ดูรูปที่ a) a) การสัมผัสนิ้วที่มี 8 พื้นผิว b) CFU บนนิ้วหลังจากการสัมผัสพื้นผิวแต่ละครั้ง

จากนั้นฉันกวาดนิ้วของผู้เข้าร่วมและวัดแบคทีเรียที่ปลายนิ้วหลังจากการสัมผัสแต่ละครั้ง จากนั้นใช้นิ้วใหม่เพื่อสัมผัสจำนวนพื้นผิวที่แตกต่างกันและจาก 1 ถึง 8 รายชื่อ (ดูรูป b)

นี่คือข้อมูลจริง : ข้อมูลจริง

ข้อมูลไม่ปกติดังนั้นดูการกระจายของแบคทีเรียที่ขอบ | NumberContacts ด้านล่าง x = แบคทีเรีย แต่ละด้านคือจำนวนผู้ติดต่อที่แตกต่างกัน

ป้อนคำอธิบายรูปภาพที่นี่

MODEL

ลองจากlme4 :: glmerตามคำแนะนำของอะมีบาโดยใช้ Gamma (link = "log") และพหุนามสำหรับ NumberContacts:

cfug<-glmer(CFU ~ Gloves + poly(NumberContacts,2) + (-1+NumberContacts|Participant),
            data=(K,CFU<4E5),
           family=Gamma(link="log")
            )
plot(cfug)

NB Gamma (link = "inverse") จะไม่ทำงานโดยบอกว่า PIRLS step-halving ล้มเหลวเพื่อลดความเบี่ยงเบน

ผล:

ติดตั้ง vs เหลือสำหรับcfug ป้อนคำอธิบายรูปภาพที่นี่

qqp (Resid (cfug))

ป้อนคำอธิบายรูปภาพที่นี่

คำถาม:

แบบจำลองความกระจ่างของฉันกำหนดไว้อย่างถูกต้องหรือไม่เพื่อรวมเอฟเฟกต์แบบสุ่มของผู้เข้าร่วมแต่ละคนและความจริงที่ว่าทุกคนทำการทดลองAตามด้วยการทดสอบBหรือไม่

ส่วนที่เพิ่มเข้าไป:

ดูเหมือนจะมีความสัมพันธ์อัตโนมัติระหว่างผู้เข้าร่วม นี่อาจเป็นเพราะพวกเขาไม่ได้ทดสอบในวันเดียวกันและขวดของแบคทีเรียเติบโตและลดลงเมื่อเวลาผ่านไป มันสำคัญไหม

acf (CFU, lag = 35) แสดงความสัมพันธ์ที่สำคัญระหว่างผู้เข้าร่วมหนึ่งคนและผู้เข้าร่วมคนต่อไป

ป้อนคำอธิบายรูปภาพที่นี่


1
คุณสามารถใช้NumberContactsเป็นปัจจัยตัวเลขและรวมคำพหุนาม / กำลังสอง หรือดูที่โมเดลเสริมแบบผสมทั่วไป
อะมีบา

1
@amoeba ขอบคุณสำหรับความช่วยเหลือของคุณ ผู้เข้าร่วมทั้งหมดทำ B (ไม่ได้รับการป้องกัน) ตามด้วย A (สวมถุงมือ) คุณคิดว่ามีปัญหาพื้นฐานอื่น ๆ กับการวิเคราะห์หรือไม่? ถ้าฉันเปิดให้คำตอบเพิ่มเติมใด ๆ
HCAI

1
ถ้าเป็นเช่นนั้นคุณสามารถรวมผลแบบสุ่มของถุงมือ นอกจากนี้ฉันไม่เข้าใจว่าทำไมคุณจึงลบการสกัดกั้นแบบสุ่มและทำไมคุณไม่รวมพหุนามดีกรี 2 ทั้งหมดในส่วนที่สุ่ม และคุณสามารถมีปฏิสัมพันธ์กับถุงมือ * num ดังนั้นทำไมไม่CFU ~ Gloves * poly(NumberContacts,2) + (Gloves * poly(NumberContacts,2) | Participant)หรืออะไรอย่างนั้น
อะมีบา

1
โอ้ฉันเข้าใจเกี่ยวกับการสกัดกั้น แต่แล้วคุณจะต้องหยุดการสกัดกั้นคงที่เช่นกัน นอกจากนี้สำหรับผู้ติดต่อที่เป็นศูนย์คุณควรมีศูนย์ CFU แต่ด้วยล็อกลิงก์สิ่งนี้ไม่สมเหตุสมผล และคุณไม่มีที่อยู่ใกล้ศูนย์ CFU ที่ 1 รายชื่อติดต่อ ดังนั้นฉันจะไม่ระงับการสกัดกั้น การไม่บรรจบกันไม่ดีลองลบการโต้ตอบออกจากส่วนที่สุ่ม: CFU ~ Gloves * poly(NumberContacts,2) + (Gloves + poly(NumberContacts,2) | Participant)หรืออาจจะเอาถุงมือออกจากที่นั่นCFU ~ Gloves * poly(NumberContacts,2) + (poly(NumberContacts,2) | Participant)...
อะมีบา

1
ฉันคิดว่าGloves * poly(NumberContacts,2) + (poly(NumberContacts,2) | Participant)เป็นแบบอย่างที่ดีงาม
อะมีบา

คำตอบ:


6

บางแปลงมีการสำรวจข้อมูล

ด้านล่างคือแปดหนึ่งรายการสำหรับหน้าสัมผัสพื้นผิวแต่ละจำนวน xy พล็อตที่แสดงถุงมือกับถุงมือ

บุคคลแต่ละคนถูกพล็อตด้วยจุด ค่าเฉลี่ยและความแปรปรวนและความแปรปรวนร่วมจะถูกระบุด้วยจุดสีแดงและวงรี (ระยะทาง Mahalanobis สอดคล้องกับ 97.5% ของประชากร)

คุณจะเห็นว่าเอฟเฟกต์เล็ก ๆ น้อย ๆ เมื่อเปรียบเทียบกับการแพร่กระจายของประชากร ค่าเฉลี่ยสูงกว่าสำหรับ 'ไม่มีถุงมือ' และค่าเฉลี่ยเปลี่ยนสูงขึ้นเล็กน้อยสำหรับการสัมผัสพื้นผิวเพิ่มเติม (ซึ่งสามารถแสดงให้เห็นว่ามีนัยสำคัญ) แต่เอฟเฟกต์มีเพียงขนาดเล็ก (โดยรวม14ลดลงเข้าสู่ระบบ) และมีบุคคลหลายคนที่มีจริงแบคทีเรียสูงนับกับถุงมือ

ความสัมพันธ์ขนาดเล็กแสดงให้เห็นว่ามีผลแบบสุ่มจากบุคคล (ถ้าไม่มีผลกระทบจากบุคคลดังนั้นไม่ควรมีความสัมพันธ์ระหว่างถุงมือที่จับคู่กับถุงมือไม่มี) แต่มันเป็นเพียงเอฟเฟกต์เล็ก ๆ น้อย ๆ และแต่ละคนอาจมีเอฟเฟกต์แบบสุ่มสำหรับ 'ถุงมือ' และ 'ไม่มีถุงมือ' (เช่นสำหรับจุดสัมผัสที่แตกต่างกันทั้งหมดบุคคลอาจมีจำนวนสูงกว่า / ต่ำกว่า 'ถุงมือ' มากกว่า 'ไม่มีถุงมือ') .

xy แปลงของที่มีและไม่มีถุงมือ

พล็อตด้านล่างเป็นแปลงที่แยกกันสำหรับแต่ละบุคคล 35 คน แนวคิดของพล็อตนี้คือการดูว่าพฤติกรรมนั้นเป็นเนื้อเดียวกันหรือไม่และเพื่อดูว่าฟังก์ชั่นประเภทใดที่เหมาะสม

โปรดทราบว่า 'ไม่มีถุงมือ' เป็นสีแดง ในกรณีส่วนใหญ่เส้นสีแดงจะสูงกว่าและมีแบคทีเรียมากขึ้นสำหรับกรณีที่ไม่มีถุงมือ

ฉันเชื่อว่าพล็อตเชิงเส้นควรเพียงพอที่จะจับแนวโน้มที่นี่ ข้อเสียของพล็อตกำลังสองคือสัมประสิทธิ์จะยากต่อการตีความ (คุณไม่เห็นโดยตรงว่าลาดเป็นบวกหรือลบเพราะทั้งเชิงเส้นและเทอมมีอิทธิพลกับเรื่องนี้)

แต่ที่สำคัญกว่านั้นคุณจะเห็นว่าแนวโน้มแตกต่างกันมากในแต่ละบุคคลดังนั้นจึงอาจมีประโยชน์ในการเพิ่มเอฟเฟกต์แบบสุ่มสำหรับไม่เพียง แต่การสกัดกั้น แต่ยังรวมถึงความชันของแต่ละบุคคลด้วย

แปลงสำหรับแต่ละบุคคล

แบบ

ด้วยรูปแบบด้านล่าง

  • แต่ละคนจะได้รับการติดตั้งโค้งของมัน (เอฟเฟกต์แบบสุ่มสำหรับค่าสัมประสิทธิ์เชิงเส้น)
  • โมเดลใช้ข้อมูลที่บันทึกการแปลงและเหมาะสมกับโมเดลเชิงเส้นปกติ (เกาส์เซียน) ในความคิดเห็นของอะมีบากล่าวว่าลิงค์บันทึกไม่เกี่ยวข้องกับการแจกแจงล็อกปกติ แต่นี่แตกต่างyN(log(μ),σ2) แตกต่างจาก log(y)N(μ,σ2)
  • น้ำหนักถูกนำไปใช้เนื่องจากข้อมูลเป็น heteroskedastic ชุดรูปแบบจะแคบลงต่อจำนวนที่มากขึ้น นี่อาจเป็นเพราะจำนวนแบคทีเรียมีเพดานบางส่วนและความแปรปรวนส่วนใหญ่เกิดจากความผิดพลาดในการส่งผ่านจากพื้นผิวสู่นิ้ว (= เกี่ยวข้องกับจำนวนที่น้อยกว่า) ดูเพิ่มเติมใน 35 แปลง มีคนส่วนใหญ่ไม่กี่คนที่การเปลี่ยนแปลงจะสูงกว่าคนอื่น ๆ (เราเห็นหางที่ใหญ่กว่า, การกระจายเกินพิกัดใน qq-plot)
  • ไม่มีการใช้คำดักจับและเพิ่มคำว่า 'ตรงกันข้าม' สิ่งนี้ทำเพื่อให้สัมประสิทธิ์การตีความง่ายขึ้น

.

K    <- read.csv("~/Downloads/K.txt", sep="")
data <- K[K$Surface == 'P',]
Contactsnumber   <- data$NumberContacts
Contactscontrast <- data$NumberContacts * (1-2*(data$Gloves == 'U'))
data <- cbind(data, Contactsnumber, Contactscontrast)
m    <- lmer(log10CFU ~ 0 + Gloves + Contactsnumber + Contactscontrast + 
                        (0 + Gloves + Contactsnumber + Contactscontrast|Participant) ,
             data=data, weights = data$log10CFU)

สิ่งนี้จะช่วยให้

> summary(m)
Linear mixed model fit by REML ['lmerMod']
Formula: log10CFU ~ 0 + Gloves + Contactsnumber + Contactscontrast + (0 +  
    Gloves + Contactsnumber + Contactscontrast | Participant)
   Data: data
Weights: data$log10CFU

REML criterion at convergence: 180.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.0972 -0.5141  0.0500  0.5448  5.1193 

Random effects:
 Groups      Name             Variance  Std.Dev. Corr             
 Participant GlovesG          0.1242953 0.35256                   
             GlovesU          0.0542441 0.23290   0.03            
             Contactsnumber   0.0007191 0.02682  -0.60 -0.13      
             Contactscontrast 0.0009701 0.03115  -0.70  0.49  0.51
 Residual                     0.2496486 0.49965                   
Number of obs: 560, groups:  Participant, 35

Fixed effects:
                  Estimate Std. Error t value
GlovesG           4.203829   0.067646   62.14
GlovesU           4.363972   0.050226   86.89
Contactsnumber    0.043916   0.006308    6.96
Contactscontrast -0.007464   0.006854   -1.09

qqplot

ส่วนเหลือ

รหัสเพื่อรับแปลง

chemometrics :: ฟังก์ชัน drawMahal

# editted from chemometrics::drawMahal
drawelipse <- function (x, center, covariance, quantile = c(0.975, 0.75, 0.5, 
                                              0.25), m = 1000, lwdcrit = 1, ...) 
{
  me <- center
  covm <- covariance
  cov.svd <- svd(covm, nv = 0)
  r <- cov.svd[["u"]] %*% diag(sqrt(cov.svd[["d"]]))
  alphamd <- sqrt(qchisq(quantile, 2))
  lalpha <- length(alphamd)
  for (j in 1:lalpha) {
    e1md <- cos(c(0:m)/m * 2 * pi) * alphamd[j]
    e2md <- sin(c(0:m)/m * 2 * pi) * alphamd[j]
    emd <- cbind(e1md, e2md)
    ttmd <- t(r %*% t(emd)) + rep(1, m + 1) %o% me
#    if (j == 1) {
#      xmax <- max(c(x[, 1], ttmd[, 1]))
#      xmin <- min(c(x[, 1], ttmd[, 1]))
#      ymax <- max(c(x[, 2], ttmd[, 2]))
#      ymin <- min(c(x[, 2], ttmd[, 2]))
#      plot(x, xlim = c(xmin, xmax), ylim = c(ymin, ymax), 
#           ...)
#    }
  }
  sdx <- sd(x[, 1])
  sdy <- sd(x[, 2])
  for (j in 2:lalpha) {
    e1md <- cos(c(0:m)/m * 2 * pi) * alphamd[j]
    e2md <- sin(c(0:m)/m * 2 * pi) * alphamd[j]
    emd <- cbind(e1md, e2md)
    ttmd <- t(r %*% t(emd)) + rep(1, m + 1) %o% me
#    lines(ttmd[, 1], ttmd[, 2], type = "l", col = 2)
    lines(ttmd[, 1], ttmd[, 2], type = "l", col = 1, lty=2)  #
  }
  j <- 1
  e1md <- cos(c(0:m)/m * 2 * pi) * alphamd[j]
  e2md <- sin(c(0:m)/m * 2 * pi) * alphamd[j]
  emd <- cbind(e1md, e2md)
  ttmd <- t(r %*% t(emd)) + rep(1, m + 1) %o% me
#  lines(ttmd[, 1], ttmd[, 2], type = "l", col = 1, lwd = lwdcrit)
  invisible()
}

พล็อต 5 x 7

#### getting data
K <- read.csv("~/Downloads/K.txt", sep="")

### plotting 35 individuals

par(mar=c(2.6,2.6,2.1,1.1))
layout(matrix(1:35,5))

for (i in 1:35) {
  # selecting data with gloves for i-th participant
  sel <- c(1:624)[(K$Participant==i) & (K$Surface == 'P') & (K$Gloves == 'G')]
      # plot data
  plot(K$NumberContacts[sel],log(K$CFU,10)[sel], col=1,
       xlab="",ylab="",ylim=c(3,6))
      # model and plot fit
  m <- lm(log(K$CFU[sel],10) ~ K$NumberContacts[sel])
  lines(K$NumberContacts[sel],predict(m), col=1)

  # selecting data without gloves for i-th participant 
  sel <- c(1:624)[(K$Participant==i) & (K$Surface == 'P') & (K$Gloves == 'U')]
     # plot data 
  points(K$NumberContacts[sel],log(K$CFU,10)[sel], col=2)
     # model and plot fit
  m <- lm(log(K$CFU[sel],10) ~ K$NumberContacts[sel])
  lines(K$NumberContacts[sel],predict(m), col=2)
  title(paste0("participant ",i))
}

พล็อต 2 x 4

#### plotting 8 treatments (number of contacts)

par(mar=c(5.1,4.1,4.1,2.1))
layout(matrix(1:8,2,byrow=1))

for (i in c(1:8)) {
  # plot canvas
  plot(c(3,6),c(3,6), xlim = c(3,6), ylim = c(3,6), type="l", lty=2, xlab='gloves', ylab='no gloves')

  # select points and plot
  sel1 <- c(1:624)[(K$NumberContacts==i) & (K$Surface == 'P') & (K$Gloves == 'G')]
  sel2 <- c(1:624)[(K$NumberContacts==i) & (K$Surface == 'P') & (K$Gloves == 'U')]
  points(K$log10CFU[sel1],K$log10CFU[sel2])

  title(paste0("contact ",i))

  # plot mean
  points(mean(K$log10CFU[sel1]),mean(K$log10CFU[sel2]),pch=21,col=1,bg=2)

  # plot elipse for mahalanobis distance
  dd <- cbind(K$log10CFU[sel1],K$log10CFU[sel2])
  drawelipse(dd,center=apply(dd,2,mean),
            covariance=cov(dd),
            quantile=0.975,col="blue",
            xlim = c(3,6), ylim = c(3,6), type="l", lty=2, xlab='gloves', ylab='no gloves')
}

ขอบคุณ Martijn มากคุณได้อธิบายสิ่งต่าง ๆ อย่างชัดเจน ! ที่น่าตื่นตาตื่นใจ เนื่องจากความโปรดปรานเสร็จสิ้นก่อนที่ฉันจะมอบหมายได้ฉันก็อยากจะเสนอจำนวนเงินแยกต่างหากให้คุณ ฉันมีข้อสงสัยบางอย่าง: ประการแรกการเปลี่ยนแปลงข้อมูลดูเหมือนจะมีโรงเรียนแห่งความคิด: บางคนเห็นด้วย & บางคนไม่เห็นด้วยอย่างรุนแรง ทำไมมันโอเคที่นี่ ประการที่สองทำไมการลบจุดตัดแบบสุ่มทำให้ค่าสัมประสิทธิ์ตีความง่ายขึ้น
HCAI

(2) ฉันเดาว่าการเปลี่ยนรูปนั้นก็โอเคเมื่อคุณสามารถยืนยันได้ว่ามีกระบวนการที่ทำให้เกิดการเปลี่ยนแปลงแบบลอจิคัล (จริง ๆ แล้วลังเลที่จะเปลี่ยนรูปเพราะมันทำให้ผลลัพธ์ดูดีสามารถมองว่าเป็นการจัดการข้อมูลและผลลัพธ์ โมเดล)
Sextus Empiricus

ฉันเห็น @Martijn อย่างน้อยก็ในเรื่องการเปลี่ยนแปลงทางชีววิทยาโดย log10 นั้นเป็นเรื่องธรรมดาสำหรับแบคทีเรีย ฉันดีใจที่ได้รับรางวัลคุณสมควรได้รับมัน คุณช่วยอธิบายเพิ่มเติมหน่อยได้ไหมว่าทำไมคุณถึงใช้คำว่า "คำเปรียบต่าง" นี้
HCAI

1
เกี่ยวกับความคมชัดดูที่นี่stats.stackexchange.com/a/308644/164061คุณมีอิสระในการย้ายคำดักจับ วิธีหนึ่งที่มีประโยชน์อาจเป็นไปได้คือการตั้งค่าการสกัดกั้นระหว่างสองหมวดหมู่และปล่อยให้เอฟเฟกต์เป็นความแตกต่างระหว่างเอฟเฟกต์ทั้งสอง (ไม่ใช่ว่าฉันต้องเพิ่มตัวแปรสำหรับสิ่งนี้)
Sextus Empiricus

1
เป็นการดีที่คุณจะได้รับการรักษาแบบสุ่มเมื่อเวลาผ่านไปซึ่งผลกระทบที่เป็นไปได้ใด ๆ เนื่องจากการเปลี่ยนแปลงในเวลาจะลดลง แต่ที่จริงฉันไม่เห็นความสัมพันธ์อัตโนมัติมากนัก คุณหมายถึงการกระโดดเช่นนี้ในผู้เข้าร่วม 5 ระหว่าง 5 และ 6 ของจำนวนผู้ติดต่อหลังจากนั้นบรรทัดจะเสถียรอีกครั้งหรือไม่? ฉันคิดว่าสิ่งเหล่านี้ไม่ได้แย่ขนาดนั้นและเพิ่มสัญญาณรบกวน แต่ไม่รบกวนวิธีการของคุณ (ยกเว้นการส่งสัญญาณ / สัญญาณรบกวนต่ำ) คุณสามารถมั่นใจได้มากขึ้นเมื่อคุณไม่เห็นการเปลี่ยนแปลงอย่างเป็นระบบเมื่อเวลาผ่านไป หากคุณประมวลผลผู้เข้าร่วมตามลำดับคุณสามารถวางแผน CFU เฉลี่ยของพวกเขาเมื่อเวลาผ่านไป
Sextus Empiricus

2

ประการแรกใช้กราฟได้ดี มันให้การแสดงข้อมูลที่ชัดเจนดังนั้นคุณจึงสามารถดูรูปแบบของข้อมูลได้ตามจำนวนผู้ติดต่อและการใช้หรือไม่มีถุงมือ ดูกราฟนี้ฉันคิดว่าคุณจะได้รับผลลัพธ์ที่ดีด้วยแบบจำลองพหุนามพหุนามพื้นฐานพร้อมเอฟเฟกต์แบบสุ่มสำหรับผู้เข้าร่วม โมเดลที่คุณเลือกนั้นดูสมเหตุสมผล แต่คุณอาจลองเพิ่มคำกำลังสองสำหรับจำนวนผู้ติดต่อ

สำหรับว่าจะใช้MASS:glmmPQLหรือlme4:glmerสำหรับแบบจำลองของคุณความเข้าใจของฉันคือว่าทั้งสองฟังก์ชั่นเหล่านี้จะพอดีกับรูปแบบเดียวกัน (ตราบใดที่คุณตั้งสมการการกระจายและฟังก์ชั่นลิงค์เหมือนกัน) แต่พวกเขาใช้วิธีการประเมินต่าง ๆ ฉันเข้าใจผิด แต่ความเข้าใจของฉันจากเอกสารคือการglmmPQLใช้ความเป็นไปได้เสมือนถูกลงโทษตามที่อธิบายไว้ในWolfinger และ O'Connell (1993)ในขณะที่glmerใช้การสร้างพื้นที่สี่เหลี่ยมจัตุรัส Gauss-Hermite หากคุณกังวลเกี่ยวกับมันคุณสามารถใส่แบบจำลองของคุณกับทั้งสองวิธีและตรวจสอบว่าพวกเขาให้ค่าสัมประสิทธิ์เท่ากันและวิธีนั้นคุณจะมีความมั่นใจมากขึ้นว่าอัลกอริธึมที่เหมาะสมได้แปรสภาพเป็น MLE จริงของสัมประสิทธิ์


ควรNumberContactsเป็นปัจจัยเด็ดขาด

ตัวแปรนี้มีการเรียงลำดับตามธรรมชาติที่ปรากฏจากแปลงของคุณเพื่อให้มีความสัมพันธ์ที่ราบรื่นกับตัวแปรตอบกลับดังนั้นคุณสามารถถือว่ามันเป็นตัวแปรตัวเลขได้อย่างสมเหตุสมผล หากคุณจะรวมfactor(NumberContacts)แล้วคุณจะไม่ จำกัด รูปแบบและคุณจะไม่สูญเสียองศาอิสระ คุณสามารถใช้การโต้ตอบได้Gloves*factor(NumberContacts)โดยไม่สูญเสียองศาความเป็นอิสระมากเกินไป อย่างไรก็ตามการพิจารณาว่าการใช้ตัวแปรปัจจัยจะเกี่ยวข้องกับการปรับข้อมูลให้เหมาะสมหรือไม่ เนื่องจากมีความสัมพันธ์ที่ค่อนข้างเรียบในพล็อตของคุณฟังก์ชันเชิงเส้นอย่างง่ายหรือสมการกำลังสองจะได้รับผลลัพธ์ที่ดีโดยไม่ต้องปรับให้แน่นเกินไป


คุณจะสร้างParticipantความชันแบบสุ่ม แต่ไม่ตัดตัวแปรได้อย่างไร

คุณได้ใส่ตัวแปรการตอบสนองของคุณในระดับบันทึกโดยใช้ฟังก์ชั่นลิงค์ลอการิทึมดังนั้นผลกระทบจากการดักฟังParticipantจะทำให้เกิดผลคูณแบบทวีคูณในการตอบสนอง หากคุณให้ความชันแบบสุ่มนี้โต้ตอบกับNumberContactsมันก็จะมีผลกระทบพลังงานตามการตอบสนอง หากคุณต้องการสิ่งนี้คุณจะได้รับ(~ -1 + NumberContacts|Participant)ซึ่งจะลบจุดตัด แต่เพิ่มความชันตามจำนวนผู้ติดต่อ


ฉันควรใช้ Box-Cox เพื่อเปลี่ยนข้อมูลของฉันหรือไม่ (เช่น lambda = 0.779)

หากมีข้อสงสัยลองปรับนางแบบด้วยการแปลงนี้และดูว่ามันเปรียบเทียบกับโมเดลอื่น ๆ อย่างไรโดยใช้สถิติความเหมาะสมที่เหมาะสม หากคุณกำลังจะใช้การแปลงนี้จะเป็นการดีกว่าถ้าคุณปล่อยพารามิเตอร์ไว้λ เป็นพารามิเตอร์อิสระและปล่อยให้มันประเมินเป็นส่วนหนึ่งของแบบจำลองของคุณแทนที่จะระบุค่าล่วงหน้า


ฉันควรรวมน้ำหนักสำหรับความแปรปรวนหรือไม่

เริ่มต้นด้วยการดูพล็อตที่เหลือของคุณเพื่อดูว่ามีหลักฐานของ heteroscedasticity หรือไม่ จากการแปลงที่คุณได้รวมไว้แล้วดูเหมือนว่าฉันจะไม่เป็นปัญหาดังนั้นคุณไม่จำเป็นต้องเพิ่มน้ำหนักใด ๆ สำหรับความแปรปรวน หากมีข้อสงสัยคุณสามารถเพิ่มน้ำหนักได้โดยใช้ฟังก์ชั่นเชิงเส้นอย่างง่ายจากนั้นทำการทดสอบทางสถิติเพื่อดูว่าความชันของการชั่งนั้นแบนหรือไม่ นั่นจะเป็นการทดสอบความแตกต่างอย่างเป็นทางการซึ่งจะให้การสำรองข้อมูลสำหรับทางเลือกของคุณ


ฉันควรรวมความสัมพันธ์อัตโนมัติไว้ด้วยNumberContactsหรือไม่

หากคุณได้รวมคำที่มีผลกระทบแบบสุ่มสำหรับผู้เข้าร่วมอยู่แล้วอาจเป็นความคิดที่ดีที่จะเพิ่มคำที่สัมพันธ์กันอัตโนมัติกับจำนวนผู้ติดต่อ การทดสอบของคุณใช้นิ้วที่แตกต่างกันสำหรับจำนวนผู้ติดต่อที่แตกต่างกันดังนั้นคุณจะไม่คาดหวังความสัมพันธ์แบบอัตโนมัติสำหรับกรณีที่คุณคิดว่าเป็นผู้เข้าร่วมแล้ว การเพิ่มคำเติมข้อความอัตโนมัตินอกเหนือจากผลกระทบของผู้เข้าร่วมหมายความว่าคุณคิดว่ามีการพึ่งพาเงื่อนไขระหว่างผลลัพธ์ของนิ้วมือที่แตกต่างกันตามจำนวนของผู้ติดต่อแม้สำหรับผู้เข้าร่วมที่ได้รับ


กราฟของคุณแสดงความสัมพันธ์ได้ดี แต่คุณสามารถปรับปรุงได้อย่างสวยงามด้วยการเพิ่มชื่อเรื่องและข้อมูลคำบรรยายและให้ป้ายกำกับแกนที่ดีขึ้น คุณสามารถทำให้คำอธิบายแผนภูมิของคุณง่ายขึ้นโดยการลบชื่อและเปลี่ยน 'ใช่' เป็น 'ถุงมือ' และ 'ไม่' เป็น 'ไม่มีถุงมือ'


ขอบคุณนั่นคือคำตอบที่น่าทึ่ง! ในที่สุดฉันก็ลอง Gamma (link = "log") และ glmer บรรจบกันโดยไม่มีการร้องเรียนไชโย! glmer (CFU ~ ถุงมือ + โพลี (NumberContacts, 2) + (-1 + NumberContacts | ผู้เข้าร่วม), ข้อมูล = na.omit (ชุดย่อย (K, CFU <4.5e5 & พื้นผิว == "P")), ครอบครัว = Gamma ( ลิงค์ = "บันทึก")) QQplot ฉันคิดว่าตกลง (ไม่มีอะไรนอก CIs) แต่ติดตั้ง vs rediduals เป็นช่องทาง (ดูรูปที่เพิ่มเข้ามาหลังจากความคิดเห็นนี้ถูกโพสต์ในกรณีที่มันไม่ตรงกับ) ฉันควรจะใส่ใจกับเรื่องนี้มากเกินไปไหม?
HCAI

1
พล็อต QQ ดูดีสำหรับฉัน นอกจากนี้โปรดจำไว้ว่าใน GLM ส่วนที่เหลือของเพียร์สันไม่จำเป็นต้องเป็นไปตามการแจกแจงแบบปกติ ดูเหมือนว่าคุณจะมีการวิเคราะห์ที่ดี
เบ็น - คืนสถานะโมนิก้า

1

แท้จริงแล้วมีเหตุผลที่จะโต้แย้งว่าการวัดที่นำมาจากผู้เข้าร่วมรายหนึ่งนั้นไม่ได้เป็นอิสระจากการเข้าร่วมจากผู้เข้าร่วมรายอื่น ตัวอย่างเช่นบางคนอาจกดนิ้วด้วยแรง (หรือน้อยกว่า) ซึ่งจะส่งผลต่อการวัดทั้งหมดของพวกเขาตามจำนวนผู้ติดต่อแต่ละคน

ดังนั้นการวัดความแปรปรวนสองทางแบบ ANOVA จึงเป็นรูปแบบที่ยอมรับได้ในกรณีนี้

อีกวิธีหนึ่งสามารถใช้โมเดลเอฟเฟ็กต์ผสมกับparticipantปัจจัยแบบสุ่ม นี่เป็นวิธีที่ก้าวหน้ากว่าและเป็นวิธีที่ซับซ้อนกว่า


ขอบคุณ Mihael คุณพูดถูกเกี่ยวกับความกดดัน อืมฉันกำลังอ่านเกี่ยวกับแบบผสมเอฟเฟ็กต์ที่นี่rcompanion.org/handbook/I_09.htmlแต่ไม่แน่ใจเกี่ยวกับการโต้ตอบและปัจจัยที่ซ้อนกัน ปัจจัยของฉันซ้อนกันอยู่ไหม
HCAI

ฉันควรจะชี้ให้เห็นว่าข้อมูลจะไม่กระจายตามปกติสำหรับแต่ละติดต่อเพื่อให้ได้ดูลงโทษกึ่งโอกาส (PQL) การสร้างแบบจำลอง: ase.tufts.edu/gsc/gradresources/guidetomixedmodelsinr/... คุณคิดว่านี่เป็นตัวเลือกที่ดีหรือไม่?
HCAI
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.