Çoklu yüzey temaslarından sonra parmaklarda alınan bakteriler: normal olmayan veriler, tekrarlanan önlemler, çapraz katılımcılar


9

giriş

İki durumda E. coli ile kontamine yüzeylere tekrar tekrar temas eden katılımcılarım var ( A = eldiven giyiyor, B = eldiven yok). Eldivenli ve eldivensiz parmak uçlarındaki bakteri miktarı arasında ve aynı zamanda temas sayısı arasında bir fark olup olmadığını bilmek istiyorum. Her iki faktör de katılımcıdır.

Deneysel yöntem:

Katılımcılar (n = 35) en fazla 8 kişi için her kareye aynı parmakla bir kez dokunurlar (bkz. Şekil a). a) 8 yüzeyli parmak temasları, b) her yüzey temasından sonra parmaklar üzerinde CFU

Daha sonra katılımcının parmağını sürün ve her temastan sonra parmak ucundaki bakterileri ölçtüm. Daha sonra farklı sayıda yüzeye dokunmak için yeni bir parmak kullanırlar ve 1 ila 8 temas noktasına kadar devam ederler (bkz. Şekil b).

İşte gerçek veriler: gerçek veriler

Veriler normal değildir, bakterilerin marjinal dağılımına bakınız. X = bakteriler. Her faset farklı sayıda kişidir.

resim açıklamasını buraya girin

MODEL

Dan çalışılıyor lme4 :: glmer NumberContacts için ( "log" = bağlantıyı) Gama kullanarak ve polinom Amoeba'nın önerilerine göre:

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

NB. Gama (link = "ters"), PIRLS'nin yarıya inmesinin sapmayı azaltamadığını söyleyerek çalışmaz.

Sonuçlar:

Cfug için artıklar ve artıklar resim açıklamasını buraya girin

qqp (artığı (cfug))

resim açıklamasını buraya girin

Soru:

Parıltı modelim, her bir katılımcının rastgele etkilerini ve her ikisinin de A denemesini ve ardından B denemesini gerçekleştirmesi için uygun şekilde tanımlanmış mı?

İlave:

Katılımcılar arasında otokorelasyon var gibi görünüyor. Muhtemelen aynı gün test edilmedikleri ve bakteri şişesi zamanla büyüdüğü ve azaldığı için. Önemli mi?

acf (CFU, lag = 35) bir katılımcı ile bir sonraki katılımcı arasında anlamlı bir korelasyon gösterir.

resim açıklamasını buraya girin


1
NumberContactsSayısal bir faktör olarak kullanabilir ve karesel / kübik polinom terimleri ekleyebilirsiniz . Veya Genelleştirilmiş Katkı Maddeli Karma Modellere bakın.
amip

1
@amoeba Yardımınız için teşekkür ederiz. Tüm katılımcılar B (kolluk), ardından A (eldivenli) yaptı. Analizde başka temel problemler olduğunu düşünüyor musunuz? Eğer öyleyse başka cevaplara açığım.
HCAI

1
Öyleyse, eldivenin rastgele etkisini dahil edebilirsiniz. Ayrıca, rasgele kesmeyi neden kaldırdığınızı ve neden rasgele kısma tüm 2. derece polinomunu dahil etmediğinizi anlamıyorum. Ve eldiven * num etkileşimine sahip olabilirsiniz. Öyleyse neden olmasın CFU ~ Gloves * poly(NumberContacts,2) + (Gloves * poly(NumberContacts,2) | Participant)ya da böyle bir şey.
amip

1
Oh, kesişim noktasını anlıyorum, ama sonra sabit kesmeyi de bastırmanız gerekir. Ayrıca, sıfır kontaklar için sıfır CFU'nuz olmalıdır, ancak log-link ile bu mantıklı değildir. Ve 1 kişide sıfır CFU'ya yakın bir yeriniz yok. Ben istiyorum Yani değil yakalamayı bastırmak. Yakınsama iyi değil, rastgele parçadan etkileşimi kaldırmaya çalışın: CFU ~ Gloves * poly(NumberContacts,2) + (Gloves + poly(NumberContacts,2) | Participant)veya belki de Eldivenleri oradan çıkarın CFU ~ Gloves * poly(NumberContacts,2) + (poly(NumberContacts,2) | Participant)...
amip

1
Bence Gloves * poly(NumberContacts,2) + (poly(NumberContacts,2) | Participant)oldukça iyi bir model.
amip

Yanıtlar:


6

Verileri keşfetmek için bazı grafikler

Aşağıda sekiz, her bir yüzey teması sayısı için bir tane, eldivenlere karşı eldiven gösteren xy grafikleri.

Her bireye bir nokta çizilir. Ortalama ve varyans ve kovaryans, kırmızı bir nokta ve elips ile (nüfusun% 97.5'ine karşılık gelen Mahalanobis mesafesi) gösterilir.

Etkilerin popülasyonun yayılmasına kıyasla sadece küçük olduğunu görebilirsiniz. Ortalama 'eldivensiz' için daha yüksektir ve daha fazla yüzey teması için ortalama biraz daha fazla değişir (bu önemli olduğu gösterilebilir). Ancak etki sadece küçüktür (genel olarak14) log azalma ve aslında daha yüksek bakteri sayımı orada kim için birçok kişi vardır ile eldiven.

Küçük korelasyon, bireylerden gerçekten rastgele bir etki olduğunu gösterir (eğer kişiden bir etki yoksa, eşleştirilmiş eldivenler ve eldivenler arasında hiçbir ilişki olmamalıdır). Ancak bu sadece küçük bir etkidir ve bir birey 'eldiven' ve 'eldiven yok' için farklı rastgele etkilere sahip olabilir (örneğin, tüm farklı temas noktaları için, birey 'eldiven' için 'eldiven yok' dan sürekli olarak daha yüksek / daha düşük sayılara sahip olabilir) .

eldivenli ve eldivensiz xy arazileri

Aşağıdaki grafik 35 kişinin her biri için ayrı arazilerdir. Bu planın fikri, davranışın homojen olup olmadığını ve ayrıca ne tür bir fonksiyonun uygun göründüğünü görmektir.

'Eldivensiz' kırmızı olduğunu unutmayın. Çoğu durumda kırmızı çizgi daha yüksektir, 'eldivensiz' vakalar için daha fazla bakteri.

Buradaki eğilimleri yakalamak için doğrusal bir grafiğin yeterli olması gerektiğine inanıyorum. İkinci dereceden grafiğin dezavantajı, katsayıların yorumlanmasının daha zor olacağıdır (hem eğimin pozitif mi negatif mi olduğunu doğrudan göremezsiniz çünkü hem doğrusal terimin hem de kuadratik terimin bu konuda bir etkisi vardır).

Ancak daha da önemlisi, eğilimlerin farklı bireyler arasında çok farklı olduğunu görüyorsunuz ve bu nedenle sadece kesişme değil, aynı zamanda bireyin eğimi için rastgele bir etki eklemek yararlı olabilir.

her birey için araziler

model

Aşağıdaki model ile

  • Her birey kendi eğrisini yerleştirir (doğrusal katsayılar için rastgele etkiler).
  • Model log dönüştürülmüş verileri kullanır ve normal (gauss) doğrusal bir modele uyar. Yorumlarda amip, bir log bağlantısının lognormal bir dağılımla ilişkili olmadığını belirtti. Ama bu farklı.yN(log(μ),σ2) farklı log(y)N(μ,σ2)
  • Veriler heteroskedastik olduğu için ağırlıklar uygulanır. Varyasyon yüksek sayılara göre daha dardır. Muhtemelen bakteri sayımının bir tavana sahip olması ve varyasyonun çoğunlukla yüzeyden parmağa iletiminin başarısız olmasından kaynaklanmaktadır (= daha düşük sayımlarla ilişkili). Ayrıca bkz. 35 parsel. Varyasyonun diğerlerinden çok daha yüksek olduğu birkaç kişi vardır. (qq-parsellerinde daha büyük kuyruklar, aşırı dağılım da görüyoruz)
  • Kesişim terimi kullanılmaz ve bir 'kontrast' terimi eklenir. Bu, katsayıların yorumlanmasını kolaylaştırmak için yapılır.

.

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)

Bu verir

> 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

kalıntılar

parsel elde etmek için kod

chemometrics :: drawMahal işlevi

# 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 arsa

#### 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 arsa

#### 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')
}

Çok teşekkür ederim Martijn, işleri çok açık bir şekilde açıkladınız. İnanılmaz! Ödül atamadan önce bittiğinden, size ayrı bir miktar sunmak istiyorum (şimdi nasıl yapacağımıza bakacağım). Yine de bazı sorularım var: Birincisi, verilerin dönüştürülmesinin düşünce okulları olduğu görülüyor: Bazıları hemfikir, bazıları ise kesinlikle katılmıyor. Neden burada iyi? İkincisi, rastgele kesişimin kaldırılması neden katsayıların yorumlanmasını kolaylaştırıyor?
HCAI

(2) Sanırım dönüşümü mantıklı kılan bir süreç olduğunu iddia edebildiğinizde dönüşüm tamam (gerçekten isteksizce dönüşüm çünkü sonuçların güzel görünmesini sağlıyor, veri manipülasyonu ve yanlış temsil eden sonuçlar olarak görülebilir ve altta yatan sonuçları elde edemezsiniz) model)
Sextus Empiricus

@Martijn'i görüyorum, en azından log10 ile dönüşüm biyolojisinde bakteriler için yaygındır. Ödülünü verdiğim için mutluyum, bunu hak ediyorsun. Lütfen bu "kontrast terimini" neden kullandığınız hakkında biraz bilgi verir misiniz?
HCAI

1
Kontrast hakkında Buraya bakınız stats.stackexchange.com/a/308644/164061 Kesişim terimini hareket ettirme özgürlüğüne sahipsiniz. Muhtemelen faydalı bir yol, iki kategori arasındaki kesişimin ayarlanması ve etkinin, bu ortalama kesişme terimine göre iki etki arasındaki (biri diğeri pozitif olacak) arasındaki fark olmasına izin vermektir. (Bunun için bir değişken eklemem gerektiğinden değil)
Sextus Empiricus

1
İdeal olarak, zaman içindeki değişimlerden kaynaklanan olası etkilerin dengeleneceği şekilde tedavileri zaman içinde rastgele dağıtabilirsiniz. Ama aslında çok fazla otokorelasyon görmüyorum. Yani katılımcı 5'teki gibi, hatlar tekrar sabit olan 5 ila 6 kontak sayısı arasındaki sıçramaları mı kastediyorsunuz? Bunların o kadar kötü olmadığını ve en çok gürültü eklediğini ancak yönteminize müdahale etmediğini düşünüyorum (sinyal / gürültü düşük yapmak hariç). Zaman içinde sistematik bir değişiklik görmediğinizden daha emin olabilirsiniz. Katılımcıları sırayla işlediyseniz, zaman içinde ortalama CFU'larını çizebilirsiniz.
Sextus Empiricus

2

İlk olarak, grafiğiniz üzerinde iyi çalışmalar; verilerin net bir temsilini verir, böylece kontakların sayısına ve eldivenlerin kullanımına veya yokluğuna bağlı olarak verilerdeki desen türünü zaten görebilirsiniz. Bu grafiğe baktığımda, katılımcılar için rastgele etkileri olan basit bir log-polinom modeli ile iyi sonuçlar alacağınızı düşünürüm. Seçtiğiniz model makul görünüyor, ancak kişi sayısı için ikinci dereceden bir terim eklemeyi de düşünebilirsiniz.

Kullanımına olmadığına dair MASS:glmmPQLveya lme4:glmermodeliniz için, benim anlayış (modeli denklemi, dağıtım ve bağlantı fonksiyonu aynı set sürece) hem bu işlevler aynı modeli uyacak ama uyum öğrenmek için farklı tahmin yöntemleri kullanmak olmasıdır. Ben yanlış olabilir, ama belgelerinden benim anlayış olduğunu glmmPQLanlatıldığı gibi yarı-olabilirlik cezalandırılmış kullanımları Wolfinger ve O'Connell (1993) ise, glmerkullandığı Gauss-Hermite. Endişeleniyorsanız, modelinizi her iki yöntemle de sığdırabilir ve aynı katsayı tahminlerini verdiklerini kontrol edebilirsiniz ve bu şekilde montaj algoritmasının katsayıların gerçek MLE'lerine dönüştüğüne daha fazla güvenirsiniz.


NumberContactsKategorik bir faktör olmalı mı ?

Bu değişken, çizim değişkeninizden yanıt değişkeni ile düzgün bir ilişkiye sahip gibi görünen doğal bir sıralamaya sahiptir, bu nedenle makul bir şekilde sayısal bir değişken olarak değerlendirebilirsiniz. Eğer dahil edecekseniz factor(NumberContacts), formunu kısıtlamayacaksınız ve birçok serbestlik derecesini kaybetmeyeceksiniz. Etkileşimi Gloves*factor(NumberContacts), çok fazla serbestlik derecesini kaybetmeden bile kullanabilirsiniz . Bununla birlikte, bir faktör değişkeni kullanmanın verilerin aşırı uydurulup tutulmayacağını düşünmeye değer. Grafiğinizde oldukça düzgün bir ilişki olduğu göz önüne alındığında, basit bir doğrusal fonksiyon veya kuadratik, fazla uymadan iyi sonuçlar alır.


Nasıl Participantrasgele bir eğim yaparsınız ama kesişen değişken değilsiniz?

Logaritmik bağlantı işlevini kullanarak yanıt değişkeninizi zaten bir günlük ölçeğine koymuşsunuzdur, bu nedenle için bir kesme etkisi Participant, yanıt üzerinde çarpma etkisi sağlar. Buna etkileşime giren rastgele bir eğim verecek NumberContactsolsaydınız, tepki üzerinde güç temelli bir etkisi olurdu. Bunu isterseniz (~ -1 + NumberContacts|Participant), kesişmeyi kaldıracak ancak kişi sayısına göre bir eğim ekleyecek şekilde alabilirsiniz .


Verilerimi dönüştürmek için Box-Cox kullanmalı mıyım? (örneğin lambda = 0.779)

Şüpheniz varsa, bu dönüşüme bir model takmayı deneyin ve uygun uyum iyiliği istatistiklerini kullanarak diğer modellerle nasıl karşılaştırıldığını görün. Bu dönüşümü kullanacaksanız, parametreyi bırakmak daha iyi olurλ parametresini ücretsiz olarak ayarlayın ve bir değer önceden belirtmek yerine modelinizin bir parçası olarak tahmin edilmesine izin verin.


Varyans için ağırlıklar içermeli miyim?

Hetero-esneklik kanıtı olup olmadığını görmek için kalan planınıza bakarak başlayın. Zaten eklediğiniz arazilere dayanarak bana bu bir sorun değil gibi görünüyor, bu yüzden varyans için herhangi bir ağırlık eklemenize gerek yok. Şüpheniz varsa, basit bir doğrusal işlev kullanarak ağırlık ekleyebilir ve ardından ağırlık eğiminin düz olup olmadığını görmek için istatistiksel bir test yapabilirsiniz. Bu, tercihiniz için size bir miktar yedek verecek olan resmi bir hetero-esneklik testi anlamına gelecektir.


Otokorelasyonu dahil etmeli miyim NumberContacts?

Katılımcı için zaten rastgele bir efekt terimi eklediyseniz, kişi sayısına otomatik bir korelasyon terimi eklemek muhtemelen kötü bir fikir olacaktır. Denemeniz farklı sayıda kişi için farklı bir parmak kullanıyor, bu nedenle katılımcı için zaten hesap verdiğiniz durumda otokorelasyon beklemezsiniz. Katılımcı etkisine ek olarak bir otokorelasyon terimi eklemek, belirli bir katılımcı için bile kişi sayısına göre farklı parmakların sonucu arasında koşullu bir bağımlılık olduğunu düşündüğünüz anlamına gelir.


Grafiğiniz ilişkileri göstermede iyidir, ancak bir başlık ve altyazı bilgisi ekleyerek ve daha iyi eksen etiketleri vererek estetik olarak geliştirebilirsiniz. Ayrıca efsanenizi başlığını kaldırarak ve 'Evet'i' Eldivenler 've' Hayır'ı 'Eldiven Yok' olarak değiştirerek de basitleştirebilirsiniz.


Teşekkür ederim, bu inanılmaz bir cevap! Sonunda Gamma'yı denedim (link = "log") ve planör şikayet etmeden birleşiyor, yaşasın! glmer (CFU ~ Eldiven + poli (Sayıİletişim, 2) + (-1 + Sayıİletişim | Katılımcı), veri = na.omit (alt küme (K, CFU <4.5e5 ve Yüzey == "P")), aile = Gamma ( link = "log")). Bence QQplot tamam (CI dışında hiçbir şey) ama takılı vs rediduals huni (bu yorum gönderilir sonra eşleşen resim eklenen eşleşmiyor ekledi bakın). Bu konuda çok fazla rahatsız olmam gerekir mi?
HCAI

1
QQ komplo bana iyi görünüyor. Ayrıca, bir GLM'de Pearson kalıntılarının normal bir dağılımı takip etmediğini unutmayın. İyi bir analize sahip olduğunuz görülüyor.
Ben - Monica'yı geri

1

Gerçekten de, bir katılımcıdan alınan ölçümlerin başka bir katılımcıdan alınan ölçümlerden bağımsız olmadığını iddia etmek mantıklıdır. Örneğin, bazı insanlar parmaklarını daha fazla (veya daha az) kuvvetle bastırma eğiliminde olabilir, bu da her bir temas sayısı boyunca tüm ölçümlerini etkileyecektir.

Dolayısıyla, iki yönlü tekrarlanan önlemler ANOVA bu durumda uygulanabilecek kabul edilebilir bir model olacaktır.

Alternatif participantolarak, rastgele bir faktör olarak karma etkiler modeli de uygulanabilir . Bu daha gelişmiş ve daha sofistike bir çözümdür.


Teşekkürler Mihael, baskı konusunda kesinlikle haklısın. Hmm Burada karma efektler modeli hakkında okuyordum rcompanion.org/handbook/I_09.html ama etkileşimler ve iç içe faktörlerden emin değilim. Faktörlerim iç içe mi?
HCAI

Ayrıca, verilerin normal olarak her bir kişi için dağıtılmadığına işaret etmeliyim, bu yüzden Cezalandırılmış Yarı olasılık (PQL) modellemesine baktım: ase.tufts.edu/gsc/gradresources/guidetomixedmodelsinr/… . Bunun iyi bir seçim olduğunu düşünüyor musunuz?
HCAI
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.