Mam wiele dobrych opinii na temat question I recently asked i zostałem poproszony o użycie dplyr do transformacji niektórych danych. Mam problem z lm() i próbuję znaleźć nachylenie z tych przekształconych danych i myślałem, że otworzę nowe pytanie.Model liniowy i dplyr - lepsze rozwiązanie?
pierwsze mam dane, które wygląda następująco:
Var1 Var2 Var3 Time Temp
a w j 9/9/2014 20
a w j 9/9/2014 15
a w k 9/20/2014 10
a w j 9/10/2014 0
b x L 9/12/2014 30
b x L 9/12/2014 10
b y k 9/13/2014 20
b y k 9/13/2014 15
c z j 9/14/2014 20
c z j 9/14/2014 10
c z k 9/14/2014 11
c w l 9/10/2014 45
a d j 9/22/2014 20
a d k 9/15/2014 4
a d l 9/15/2014 23
a d k 9/15/2014 11
i chcę go w postaci tego (wartości dla Slope i Pearson symulowane na ilustracji):
V1 V2 V3 Slope Pearson
a w j -3 -0.9
a w k 2 0
a d j 1.5 0.6
a d k 0 0.5
a d l -0.5 -0.6
b x L 12 0.7
b y k 4 0.6
c z j -1 -0.5
c z k -3 -0.4
c w l -10 -0.9
Nachylenie bycia nachylenie liniowe najmniejszych kwadratów. Teoretycznie skrypt wyglądałby tak:
library(dplyr)
data <- read.table("clipboard",sep="\t",quote="",header=T)
newdata = summarise(group_by(data
,Var1
,Var2
,Var3
)
,Slope = lm(Temp ~ Time)$coeff[2]
,Pearson = cor(Time, Temp, method="pearson")
)
Ale R zgłasza błąd, ponieważ nie może znaleźć czasu ani temp. Może on uruchamiać lm(data$Temp ~ data$Time)$coeff[2]
, ale zwraca nachylenie dla całego zestawu danych, a nie dla podsekcji, której szukam. Wydaje się, że cor()
działa poprawnie w sekcji group_by
, więc czy istnieje specyficzna składnia, którą muszę przekazać do lm()
, aby uruchomić ją w podobny sposób, lub użyć zupełnie innej funkcji, aby uzyskać nachylenie przekazane z podzbioru?
Jeden z tutejszych problemów jest to, że nie masz wystarczająco dużo różnych wartości podczas grupowania przez zm1 i VAR2 i VAR3, regresja liniowa, więc nie jest możliwe –
Innym problemem jest to, co dokładnie korelacja próbujesz sprawdzić między 'Time' i' Temp'? 'Czas' to data, korelacja Pearsona wymaga dwóch wektorów liczbowych. –
Możesz rzucić okiem na przykłady'? Do', gdzie uruchamiają modele 'lm' na zgrupowanych danych i wyodrębniają statystyki z każdego modelu. – Henrik