R'de tekrarlanan ölçümlerle doğrusal regresyon


12

Tekrarlanan bir ölçüm tasarımı için R'de doğrusal regresyonun nasıl gerçekleştirileceğini anlayamadım. Bir de önceki soruya (hala cevaplanmamış) o kullanmamayı bana önerildi lmkarışık modeller kullanma yerine ancak. Ben lmşu şekilde kullandım:

lm.velocity_vs_Velocity_response <- lm(Velocity_response~Velocity*Subject, data=mydata)

(veri kümesiyle ilgili daha fazla ayrıntı yukarıdaki bağlantıda bulunabilir)

Ancak internette R kodu ile doğrusal regresyon analizinin nasıl yapılacağını gösteren herhangi bir örnek bulamadım.

Ne istiyorum bir yandan veri uydurma hattı ile verilerin bir arsa ve diğer yandan model için anlamlılık testi için p-değeri ile birlikte değeri.R,2

Bazı önerilerde bulunabilecek biri var mı? Herhangi bir R kodu örneği çok yardımcı olabilir.


Düzenle
Şimdiye kadar aldığım öneriye göre, Velocity_response (anketten türetme) ve Hız (performanstan türetme) değişkenleri arasında doğrusal bir ilişki olup olmadığını anlamak için verilerimi analiz etme çözümü şu olmalıdır:

library(nlme)
summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))

Özet sonucu bunu verir:

    > summary(lme(Velocity_response ~ Velocity*Subject, data=scrd, random= ~1|Subject))
    Linear mixed-effects model fit by REML
     Data: scrd 
           AIC      BIC   logLik
      104.2542 126.1603 -30.1271

    Random effects:
     Formula: ~1 | Subject
            (Intercept) Residual
    StdDev:    2.833804 2.125353

Fixed effects: Velocity_response ~ Velocity * Subject 
                              Value Std.Error DF    t-value p-value
(Intercept)               -26.99558  25.82249 20 -1.0454288  0.3083
Velocity                   24.52675  19.28159 20  1.2720292  0.2180
SubjectSubject10           21.69377  27.18904  0  0.7978865     NaN
SubjectSubject11           11.31468  33.51749  0  0.3375754     NaN
SubjectSubject13           52.45966  53.96342  0  0.9721337     NaN
SubjectSubject2           -14.90571  34.16940  0 -0.4362299     NaN
SubjectSubject3            26.65853  29.41574  0  0.9062674     NaN
SubjectSubject6            37.28252  50.06033  0  0.7447517     NaN
SubjectSubject7            12.66581  26.58159  0  0.4764880     NaN
SubjectSubject8            14.28029  31.88142  0  0.4479188     NaN
SubjectSubject9             5.65504  34.54357  0  0.1637076     NaN
Velocity:SubjectSubject10 -11.89464  21.07070 20 -0.5645111  0.5787
Velocity:SubjectSubject11  -5.22544  27.68192 20 -0.1887672  0.8522
Velocity:SubjectSubject13 -41.06777  44.43318 20 -0.9242591  0.3664
Velocity:SubjectSubject2   11.53397  25.41780 20  0.4537754  0.6549
Velocity:SubjectSubject3  -19.47392  23.26966 20 -0.8368804  0.4125
Velocity:SubjectSubject6  -29.60138  41.47500 20 -0.7137162  0.4836
Velocity:SubjectSubject7   -6.85539  19.92271 20 -0.3440992  0.7344
Velocity:SubjectSubject8  -12.51390  22.54724 20 -0.5550080  0.5850
Velocity:SubjectSubject9   -2.22888  27.49938 20 -0.0810519  0.9362
 Correlation: 
                          (Intr) Velcty SbjS10 SbjS11 SbjS13 SbjcS2 SbjcS3 SbjcS6 SbjcS7 SbjcS8 SbjcS9 V:SS10 V:SS11 V:SS13 Vl:SS2 Vl:SS3
Velocity                  -0.993                                                                                                         
SubjectSubject10          -0.950  0.943                                                                                                  
SubjectSubject11          -0.770  0.765  0.732                                                                                           
SubjectSubject13          -0.479  0.475  0.454  0.369                                                                                    
SubjectSubject2           -0.756  0.751  0.718  0.582  0.362                                                                             
SubjectSubject3           -0.878  0.872  0.834  0.676  0.420  0.663                                                                      
SubjectSubject6           -0.516  0.512  0.490  0.397  0.247  0.390  0.453                                                               
SubjectSubject7           -0.971  0.965  0.923  0.748  0.465  0.734  0.853  0.501                                                        
SubjectSubject8           -0.810  0.804  0.769  0.624  0.388  0.612  0.711  0.418  0.787                                                 
SubjectSubject9           -0.748  0.742  0.710  0.576  0.358  0.565  0.656  0.386  0.726  0.605                                          
Velocity:SubjectSubject10  0.909 -0.915 -0.981 -0.700 -0.435 -0.687 -0.798 -0.469 -0.883 -0.736 -0.679                                   
Velocity:SubjectSubject11  0.692 -0.697 -0.657 -0.986 -0.331 -0.523 -0.607 -0.357 -0.672 -0.560 -0.517  0.637                            
Velocity:SubjectSubject13  0.431 -0.434 -0.409 -0.332 -0.996 -0.326 -0.378 -0.222 -0.419 -0.349 -0.322  0.397  0.302                     
Velocity:SubjectSubject2   0.753 -0.759 -0.715 -0.580 -0.360 -0.992 -0.661 -0.389 -0.732 -0.610 -0.563  0.694  0.528  0.329              
Velocity:SubjectSubject3   0.823 -0.829 -0.782 -0.634 -0.394 -0.622 -0.984 -0.424 -0.799 -0.667 -0.615  0.758  0.577  0.360  0.629       
Velocity:SubjectSubject6   0.462 -0.465 -0.438 -0.356 -0.221 -0.349 -0.405 -0.995 -0.449 -0.374 -0.345  0.425  0.324  0.202  0.353  0.385
Velocity:SubjectSubject7   0.961 -0.968 -0.913 -0.740 -0.460 -0.726 -0.844 -0.496 -0.986 -0.778 -0.718  0.886  0.674  0.420  0.734  0.802
Velocity:SubjectSubject8   0.849 -0.855 -0.807 -0.654 -0.406 -0.642 -0.746 -0.438 -0.825 -0.988 -0.635  0.783  0.596  0.371  0.649  0.709
Velocity:SubjectSubject9   0.696 -0.701 -0.661 -0.536 -0.333 -0.526 -0.611 -0.359 -0.676 -0.564 -0.990  0.642  0.488  0.304  0.532  0.581
                          Vl:SS6 Vl:SS7 Vl:SS8
Velocity                                      
SubjectSubject10                              
SubjectSubject11                              
SubjectSubject13                              
SubjectSubject2                               
SubjectSubject3                               
SubjectSubject6                               
SubjectSubject7                               
SubjectSubject8                               
SubjectSubject9                               
Velocity:SubjectSubject10                     
Velocity:SubjectSubject11                     
Velocity:SubjectSubject13                     
Velocity:SubjectSubject2                      
Velocity:SubjectSubject3                      
Velocity:SubjectSubject6                      
Velocity:SubjectSubject7   0.450              
Velocity:SubjectSubject8   0.398  0.828       
Velocity:SubjectSubject9   0.326  0.679  0.600

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-1.47194581 -0.46509026 -0.05537193  0.39069634  1.89436646 

Number of Observations: 40
Number of Groups: 10 
Warning message:
In pt(q, df, lower.tail, log.p) : NaNs produced
> 

Şimdi, R ^ 2 ve iki değişken arasında doğrusal bir ilişki olup olmadığını gösteren karşılık gelen p-değerlerini nereden alabileceğimi anlamıyorum, ne de verilerimin regresyon.

Biri beni aydınlatacak kadar kibar olabilir mi? Yardımına gerçekten ihtiyacım var arkadaşlar ...


Zuur ve ark. teoriye daha az, metodolojinin uygulanmasına daha çok odaklanan doğrusal karma efekt modellerine güzel bir giriş niteliğindedir.
Roland

Sevgili Roland, bu kitabın yararlı olduğuna inanıyorum, ancak on line bir şey arıyorum ... önerecek bir web sayfanız var mı?
L_T

1
Daha önceki yazınızda söylediğim gibi, lm () ile ilişkili bir arsa var. Dolayısıyla, modeliniz M1 ise çizim (M1) kullanabilirsiniz.
Peter Flom - Monica'yı eski durumuna döndürün

sevgili @ PeterFlom evet, ama aynı zamanda tekrarlanan ölçüm tasarımı için lm kullanmaktan kaçınmamı söyledin. Yani, sorum, verilerimi veya başka bir işlevi analiz etmek için lm kullanmam gerekip gerekmediğidir. Herhangi bir öneri?
L_T

1
Dediğim gibi, çok seviyeli modellere bakın. R'de nlmepakete bakabilirsiniz . Ayrıca, bu sitede konu için arama yapın, burada çok fazla şey yazılmıştır.
Peter Flom - Monica'yı eski durumuna döndürün

Yanıtlar:


17

Yaptığınız şey gerçekten analizin hedeflerine bağlıdır. Analizinizin hedeflerinin tam olarak ne olduğundan emin değilim, ancak birkaç örnek üzerinden geçeceğim ve umarım bunlardan biri sizin durumunuz için geçerli olacaktır.

Durum 1 : İki adet ölçülen bir niceliksel değişken

Diyelim ki, katılımcılara iki kez istatistik testi yaptırdığınız ve ikinci ölçümdeki ortalama puanların ilk ölçümden farklı olup olmadığını öğrenmek istediniz (öğrenmenin gerçekleşip gerçekleşmediğini belirlemek için). Test1 ve test2 puanları veri çerçevesi d'de depolanıyorsa, bunu tamamen lm () işlevini kullanarak yapabilirsiniz:

mod <- lm(test2 - test1 ~ 1, data = d)
summary(mod)

Kesinti testi, test1 ve test2 arasındaki farkın testidir. Test1 ve test2 arasındaki fark için delta-R ^ 2'ye sahip olmayacağınıza dikkat edin - bunun yerine, etki büyüklüğü ölçünüz kohen d gibi bir şey olmalıdır.

Durum 2a : İki kez ölçülen bir niceliksel değişken, bir dikotomik değişken, tamamen denekler arasında ölçülen

Aynı çalışma tasarımına sahip olduğumuzu varsayalım, ancak erkekler ve kadınlar için farklı öğrenme oranlarının olup olmadığını bilmek istiyoruz. Dolayısıyla, iki kez ölçülen bir niceliksel değişkenimiz (test performansı) ve bir kez ölçülen bir dikotom değişkenimiz var. Test1, test2 ve cinsiyetin hepsi veri çerçevesi d'de bulunduğunu varsayarsak, bu modeli sadece lm () kullanarak da test edebiliriz:

mod <- lm(test2 - test1 ~ gender, data = d)
summary(mod)
lm.sumSquares(mod) # lm.sumSquares() is located in the lmSupport package, and gives the change in R^2 due to the between-subjects part of the model

Cinsiyetin ortalandığı varsayılırsa (örneğin, erkek = -.5 ve kadın = +.5 olarak kodlanır), bu modeldeki kesişme, erkek ve kadınlarda ortalama olarak test 1 ve test 2 arasındaki farkın testidir. Cinsiyet katsayısı, zaman ve cinsiyet arasındaki etkileşimdir. Zaman içinde ortalama olarak cinsiyetin etkisini elde etmek için yapmanız gerekenler:

mod <- lm(rowMeans(cbind(test2, test1)) ~ gender, data = d)
summary(mod)

Durum 2b : İki kez ölçülen bir kantitatif değişken, sadece bir kez ölçülen bir kantitatif değişken

Yine iki kez ölçülen bir kantitatif değişkenimiz ve bir kez ölçülen bir kantitatif değişkenimiz olduğunu varsayalım. Örneğin, istatistiklere ilişkin bir taban çizgisi ilgisi ölçümüz olduğunu ve daha yüksek taban çizgisi ilgisine sahip kişilerin 1'den 2'ye kadar daha fazla şey öğrenip öğrenmediklerini belirlemek istedik. :

d$interestc <- d$interest - mean(d$interest)

Test1, test2 ve faizc'nin veri çerçevesi d'de olduğu varsayıldığında, bu soru Vaka 1a'ya çok benzer şekilde test edilebilir:

mod <- lm(test2 - test1 ~ interestc, data = d)
summary(mod)
lm.sumSquares(mod)

Bir kez daha, bu modeldeki kesişme, ilgi alanı ortalaması alınarak test puanlarının 1'den 2'ye değişip değişmediğini test eder. Ancak, bu yorum sadece ilgi merkezlendiğinde geçerlidir. Faiz katsayısı, zamanın etkisinin mevcut faiz oranına bağlı olup olmadığıdır. Yukarıdaki gibi test1 ve test 2 ortalamasını alarak ve bu bileşik değişken üzerindeki ilgi etkisini test ederek zaman içinde ortalamanın üzerinde bir faiz etkisi elde edebiliriz.

Durum 2c : İki kez ölçülen bir niceliksel değişken, bir kategorik değişken, sadece bir kez ölçülen

Diyelim ki, denekler arası değişkeniniz yalnızca bir kez ölçülen bir kategori. Örneğin, farklı ırklardan insanların (White vs Asian vs Black vs Hispanic) 1'den 2'ye farklı öğrenme düzeyleri olup olmadığını merak ettiğinizi varsayalım. Test1, test2 ve ırk veri çerçevesinde d. , önce kod yarışını karşılaştırmanız gerekir. Bu, test etmek istediğiniz belirli hipotezlere / sorulara bağlı olarak planlanan dikey kontrastlar, kukla kodlar veya efekt kodları kullanılarak yapılabilir (bunu yapmak için bir yardımcı işlev arıyorsanız lm.setContrasts () 'a bakmanızı öneririm) . Yarış değişkeninin zaten kontrast kodlu olduğunu varsayarsak, yukarıdaki gibi iki duruma çok benzer şekilde lm () kullanırsınız:

mod <- lm(test2 - test1 ~ race, data = d)
summary(mod)
lm.sumSquares(mod)

Yarış karşıtlıklarının ortalandığı varsayılarak, bu modeldeki kesişme bir kez daha zamanın "ana etkisi" dir. Yarış zıtlıkları için katsayılar, bu zıtlıklar ve zaman arasındaki etkileşimlerdir. Yarışın omnibus etkilerini elde etmek için aşağıdaki kodu kullanın:

Anova(mod, type = 3)

Durum 3 : 3 kez ölçülen bir kantitatif değişken (yani, deneklerde üç seviyeli manipülasyon)

Birinci durumdan tasarıma üçüncü bir ölçüm noktası eklediğinizi varsayalım. Bu nedenle, katılımcılarınız iki kez yerine üç kez istatistik testi yaptı. Burada, zaman noktaları arasındaki farkların omnibus testi isteyip istemediğinize bağlı olarak birkaç seçeneğiniz var (bazen istemezsiniz).

Örneğin, ana hipotezinizin test puanlarının 1'den 3'e doğrusal olarak artacağı olduğunu varsayalım. Test1, test2 ve test3'ün veri çerçevesi d'de olduğu varsayılarak, bu hipotez ilk önce aşağıdaki kompozit oluşturularak test edilebilir:

d$lin <- d[, paste("test", sep = "", 1:3)] %*% c(-1, 0, 1)

Sonra bağımlı değişkeni olarak lin kullanan bir kesişim modelinin, 0'dan farklı bir kesişme noktasına sahip olup olmadığını test edersiniz:

mod <- lm(lin ~ 1, data = d)
summary(mod)

Bu, istatistik skorlarının zaman içinde artıp artmadığına dair testinizi verecektir. Elbette, hipotezlerinize bağlı olarak başka tür özel fark puanları da oluşturabilirsiniz.

Omnibus anlamlılık testlerini önemsiyorsanız, araç paketinden Anova () işlevini kullanmanız gerekir. Özel uygulama biraz kıvrımlıdır. Temel olarak, hangi değişkenlerin özneler içinde hangileri arasında özneler olduğunu lm () kullanarak belirtirsiniz. Daha sonra modelin özneler bölümünü yaratırsınız (yani test1, test2 ve test3'ten hangisinin birinci, ikinci ve üçüncü olarak ölçüleceğini belirtin) ve sonra idata adı verilen bir veri çerçevesi oluşturarak bu modeli Anova'ya () iletin. Varsayımsal örneğimi kullanarak:

mod <- lm(cbind(test1, test2, test3) ~ 1, data = d) # No between-subjects portion of the model
idata <- data.frame(time = c("time1", "time2", "time3")) # Specify the within-subjects portion of the model
mod.A <- Anova(mod, idata = idata, idesign = ~time, type = 3) # Gives multivariate tests.  For univariate tests, add multivariate = FALSE
summary(mod.A)

İdesign ifadesi, Anova'ya zaman değişkenini (test1, test2 ve test3'ten oluşur) modele dahil etmesini söyler. Bu kod, zamanın test puanları üzerindeki etkilerine dair omnibus testlerinizi verecektir.

Durum 4 : 3 kez ölçülen bir kantitatif değişken, denekler arasında bir kantitatif değişken

Bu durum Vaka 3'ün basit bir uzantısıdır. Yukarıdaki gibi, sadece 1 serbestlik derecesi testini önemsiyorsanız, denekler değişkeninizle özel bir fark puanı oluşturabilirsiniz. Bu nedenle, test1, test2, test3 ve ilginin tümünün veri çerçevesi d'de olduğunu varsayarsak ve zamanın test puanları üzerindeki doğrusal etkileriyle (ve zamanın bu etkilerinin taban çizgisi ilgisine göre nasıl değiştiğiyle) ilgilendiğimizi varsayarsak, devamındaki:

d$lin <- d[, paste("test", sep = "", 1:3)] %*% c(-1, 0, 1)

Ardından, aşağıdakileri yapın (ortalama merkezli ilgi ile):

mod <- lm(lin ~ interestc, data = d)
summary(mod)
lm.sumSquares(mod)

Omnibus testleri istiyorsanız, aşağıdakileri yapın:

mod <- lm(cbind(test1, test2, test3) ~ interest, data = d) # We now have a between-subjects portion of the model
idata <- data.frame(time = c("time1", "time2", "time3"))
mod.A <- Anova(mod, idata = idata, idesign = ~time * interest, type = 3) # The idesign statement assumes that we're interested in the interaction between time and interest
summary(mod.A)

Diğer durumlar: Bunları kısalık için atlayacağım, ancak bunlar daha önce tarif ettiğim şeyin basit uzantıları.

Zamanın 2 seviyeden fazla olduğu zaman (tek değişkenli) omnibus testlerinin hepsinin küresellik aldığını lütfen unutmayın. Seviye sayısını artırdıkça bu varsayım oldukça savunulamaz hale gelir. Tasarımınızda birkaç ölçüm noktanız varsa (örneğin, 4+) çok düzeyli modelleme gibi bir şey kullanmanızı ve bu teknik için özel bir pakete ( nlme veya lme4 gibi) gitmenizi şiddetle tavsiye ederim .

Bu yardımcı olur umarım!


Sevgili Patrick @ user1188407, çok teşekkürler böyle bir cevap vermede çok naziksiniz. Ne yazık ki benim durumum muhtemelen son cümlelerde yazdıklarınıza uyuyor ... bu yüzden verilerimi nasıl tedavi edeceğimizi anlamak için bir R kodu örneğine ihtiyacım olacak. Gerçekten de önceki
yazımda açıklanan denememin

ve dört koşulda algılanan hızı ifade eden bir değişkenle (velosity_response) doğrusal bir ilişki olup olmadığını bulmak istiyorum. Böylece her katılımcıya 4 koşul uygulandı ve daha sonra bu koşulların algılanması değerlendirildi. Performansın algı ile ilgili olup olmadığını bilmek istiyorum ...
L_T

Çok düzeyli bir modelleme çözümü kullanmak istiyorsanız, birçok farklı çevrimiçi kaynaktan yararlanabilirsiniz. Başlamak için nlme paketine ve bu skeçe bir göz atmalısınız . Vinyet biraz güncel değil (2002), çok seviyeli modellemeyi öğrenirken faydalı buldum. Son olarak, nlme paketinin yapımcıları tarafından yayınlanan kitaba göz atabilirsiniz.
Patrick S. Forscher

Sevgili Patrick @ user1188407 teşekkürler. Çok düzeyli modelleri inceledim ve verilerimi analiz etmek için bu formüle geldim: lme (Velocity_response ~ Velocity * Subject, data = scrd, random = ~ 1 | Subject) Lütfen bu formülün analiz için doğru olduğunu onaylayabilir misiniz? verilerim üzerinde performans göstermek ister misiniz? Ancak, R ^ 2 ve p-değerlerini nasıl alabilirim veya grafiğin regresyona uyan noktalar ve çizgi ile nasıl çizileceğini anlayamıyorum. Lütfen bana yardım eder misiniz? Ben bir istatistikçi değilim ...
L_T

Formül, çalışmanızı anlamam (ve verilerinizi kişi dönemi biçiminde biçimlendirdiğinizi varsayarak) benim için doğru görünüyor. Analizinizin sonuçlarını bir nesneye (örneklerimde yaptığım gibi) kaydedip o nesnenin bir özetini alarak p-değerlerinizi elde edersiniz. Ancak, çok düzeyli modeller ile geleneksel regresyon arasındaki farklar nedeniyle (örneğin, etki boyutu metriklerinde - çok düzeyli modellerde standart bir metrik yoktur) kullanmadan önce bu teknik hakkında daha fazla bilgi vermenizi önemle tavsiye ederim. Diğer kullanıcılar birkaç iyi seçenek önermiş gibi görünüyor.
Patrick S. Forscher
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.