Czy są jakieś pakiety R do obliczania tau-b i tau-c Kendalla i związanych z nimi błędów standardowych? Moje wyszukiwania w Google i Rseek nie wykazały niczego, ale na pewno ktoś je zaimplementował w R.Miary skojarzeń w R-Kendall's tau-b i tau-c
Odpowiedz
Istnieje trzyKendal statystyki tau (tau-A, tau-b i tau-C).
Są one nie wymienne, a żadna z odpowiedzi opublikowanych do tej pory nie dotyczy dwóch ostatnich, co jest przedmiotem pytania OP.
nie był w stanie znaleźć funkcje w celu obliczenia tau-tau-B lub C, albo w R Biblioteka standardowa ( stat i wsp.) Lub w każdym z pakietów dostępnych w CRAN lub innych testing. Użyłem doskonałego pakietu R sos do wyszukiwania, więc uważam, że wyniki zwrócone były dość dokładne.
Oto krótka odpowiedź na pytanie OP: brak funkcji wbudowanej lub pakietowej dla tau-b lub tau-c.
Ale łatwo jest przetaczać własne.
funkcje Pisanie R dla statystyk Kendall jest tylko kwestią tłumaczenia te równania do kodu:
Kendall_tau_a = (P - Q)/(n*(n-1)/2)
Kendall_tau_b = (P - Q)/((P + Q + Y0)*(P + Q + X0))^0.5
Kendall_tau_c = (P-Q)*((2*m)/n^2*(m-1))
tau-a: równa zgodnych minus niezgodnych parach, podzielona przez czynnik do uwzględnienia całkowita liczba par (wielkość próby).
tau-b: jawne rozliczanie więzi --ie, obaj członkowie pary danych mają taką samą wartość; ta wartość jest równa zgodnej minus pary niezgodne podzielona przez termin reprezentujący średnią geometryczną między liczbą par niezwiązanych na x (X0) i liczbą nie związaną na y (Y0).
tau-C:większej tabeli wariant również optymalizowane dla tabel niekwadratowych; równa się zgodnym minusom niezgodnym parom pomnożonym przez współczynnik dostosowujący się do rozmiaru tabeli).
# number of concordant pairs
P = function(t) {
r_ndx = row(t)
c_ndx = col(t)
sum(t * mapply(function(r, c){sum(t[(r_ndx > r) & (c_ndx > c)])},
r = r_ndx, c = c_ndx))}
# number of discordant pairs
Q = function(t) {
r_ndx = row(t)
c_ndx = col(t)
sum(t * mapply(function(r, c){
sum(t[(r_ndx > r) & (c_ndx < c)])
},
r = r_ndx, c = c_ndx))
}
# sample size (total number of pairs)
n = n = sum(t)
# the lesser of number of rows or columns
m = min(dim(t))
Więc te cztery parametry są potrzebne do obliczenia tau-a, tau-b i tau-c:
P
Q
m
n
(oraz XO & Y0 do tau-b)
Na przykład, kod tau-c jest:
kendall_tau_c = function(t){
t = as.matrix(t)
m = min(dim(t))
n = sum(t)
ks_tauc = (m*2 * (P(t)-Q(t)))/((n^2)*(m-1))
}
Więc jak to statystyka tau Kendalla związane innych badań statystycznych wykorzystywanych w kategorycznej analizy danych?
Wszystkie trzy statystyki tau Kendalla, wraz z Goodmana i Kruskala za gamma są dla korelacji porządkowych i binarnych danych. (Statystyki Kendall tau są bardziej wyrafinowanymi alternatywami dla statystyki gamma (tylko P-Q).)
I tak Kendalls za tau i gamma są odpowiednikami do prostego chi-kwadrat i dokładnych testów Fishera, z których oba są (o ile wiem) nadaje się tylko do danych nominalnej.
przykład:
cpa_group = c(4, 2, 4, 3, 2, 2, 3, 2, 1, 5, 5, 1)
revenue_per_customer_group = c(3, 3, 1, 3, 4, 4, 4, 3, 5, 3, 2, 2)
weight = c(1, 3, 3, 2, 2, 4, 0, 4, 3, 0, 1, 1)
dfx = data.frame(CPA=cpa_group, LCV=revenue_per_customer_group, freq=weight)
# reshape data frame so 1 row for each event
# (prediate step to create contingency table)
dfx2 = data.frame(lapply(dfx, function(x){rep(x, dfx$freq)}))
t = xtabs(~ revenue + cpa, dfx)
kc = kendall_tau_c(t)
# returns -.35
Czy próbowałeś już funkcji cor
? Istnieje metoda, którą można ustawić na "kendall"
(w razie potrzeby dostępne są również opcje dla "pearson"
i "spearman"
), nie wiem, czy obejmuje ona wszystkie standardowe błędy, których szukasz, ale powinna zacząć.
-1: To nie mówi nic o Tau-b Kendalla ani Tau-c, więc nie odpowiada na pytanie. – Firefeather
Po to, by rozwinąć odpowiedź Stedy'ego ... cor(x,y,method="kendall")
da ci korelację, cor.test(x,y,method="kendall")
da ci wartość p i CI.
Zobacz także pakiet Kendall, który zapewnia funkcję, która zapewnia lepszą aproksymację.
> library(Kendall)
> Kendall(x,y)
Istnieje również funkcja cor.matrix w pakiecie Deducer o ładnym druku:
> library(Deducer)
> cor.matrix(variables=d(mpg,hp,wt),,
+ data=mtcars,
+ test=cor.test,
+ method='kendall',
+ alternative="two.sided",exact=F)
Kendall's rank correlation tau
mpg hp wt
mpg cor 1 -0.7428 -0.7278
N 32 32 32
stat** -5.871 -5.798
p-value 0.0000 0.0000
----------
hp cor -0.7428 1 0.6113
N 32 32 32
stat** -5.871 4.845
p-value 0.0000 0.0000
----------
wt cor -0.7278 0.6113 1
N 32 32 32
stat** -5.798 4.845
p-value 0.0000 0.0000
----------
** z
HA: two.sided
-1: To nie czyni żadnej wzmianki o Tau-b Kendalla lub Tau-c, więc nie odpowiada na pytanie. – Firefeather
Jest rutynową dla współczynnika Kendalla w psych
pakiecie z corr.test(x, method = "kendall")
. Ta funkcja może być zastosowana w data.frame, a także wyświetla wartości p-wartości dla każdej pary zmiennych. Domyślam się, że wyświetla on współczynnik tau-a. Jedynym minusem jest to, że w rzeczywistości jest to wrapper dla funkcji cor()
.
Wikipedia ma good reference na współczynniku Kendalla i sprawdź this link obecnie. Wypróbuj pakiet sos
i funkcję findFn()
. Mam masę rzeczy podczas sprawdzania "tau a"
i tau b
, ale oba zakończyły się bez powodzenia. Wyniki wyszukiwania wydają się łączyć z pakietem Kendall
, sugerowanym jako @Ian.
@ Komentarze Firefeather na tej stronie wskazują, że 'cor' oblicza * tau-b *. –
Natknęliśmy tej stronie dzisiaj, jak szukałem implementacji tau-b Kendalla w R
dla nikogo szuka samo:
tau b jest w rzeczywistości częścią pakietu statystyk.
Zobacz ten link aby uzyskać więcej informacji: https://stat.ethz.ch/pipermail/r-help//2012-August/333656.html
Próbowałem ją i działa: Library (statystyk)
x <- c(1,1,2)
y<-c(1,2,3)
cor.test(x, y, method = "kendall", alternative = "greater")
to wyjście:
data: x and y
z = 1.2247, p-value = 0.1103
alternative hypothesis: true tau is greater than 0
sample estimates:
tau
0.8164966
Warning message:
In cor.test.default(x, y, method = "kendall", alternative = "greater") :
Cannot compute exact p-value with ties
Zignoruj komunikat ostrzegawczy. Tau jest w rzeczywistości tau b !!!
Rzeczywiście, zarówno 'cor.test (x, y, method =" kendall ")' i 'cor (x, y, method =" kendall ")' obliczyć Tau-b Kendalla. – Firefeather
Dość długo, ale 3 funkcje są zaimplementowane w DescTools.
library(DescTools)
# example in:
# http://support.sas.com/documentation/cdl/en/statugfreq/63124/PDF/default/statugfreq.pdf
# pp. S. 1821
tab <- as.table(rbind(c(26,26,23,18,9),c(6,7,9,14,23)))
# tau-a
KendallTauA(tab, conf.level=0.95)
tau_a lwr.ci ups.ci
0.2068323 0.1771300 0.2365346
# tau-b
KendallTauB(tab, conf.level=0.95)
tau_b lwr.ci ups.ci
0.3372567 0.2114009 0.4631126
# tau-c
> StuartTauC(tab, conf.level=0.95)
tauc lwr.ci ups.ci
0.4110953 0.2546754 0.5675151
# alternative for tau-b:
d.frm <- Untable(tab, dimnames = list(1:2, 1:5))
cor(as.numeric(d.frm$Var1), as.numeric(d.frm$Var2),method="kendall")
[1] 0.3372567
# but no confidence intervalls for tau-b! Check:
unclass(cor.test(as.numeric(d.frm$Var1), as.numeric(d.frm$Var2), method="kendall"))
Według tego oznaczenia, opiekuna strona http://www.r-tutor.com/gpu-computing/correlation/kendall-tau-b tau-b, w rzeczywistości jest obliczonym przez funkcję zasady R.
Odpowiedź Douga jest niepoprawna. Pakiet Kendall może być użyty do obliczenia Tau b.
Funkcja pakietu Kendall Kendall (a także wydaje się, że jest to cor (x, y, method = "kendall")) obliczania więzi za pomocą wzoru na Tau-b. Jednak w przypadku wektorów z wiązaniami pakiet Kendalla ma bardziej poprawną wartość p. Patrz strona 4 dokumentacji Kendall z https://cran.r-project.org/web/packages/Kendall/Kendall.pdf stronie 4 i D przedstawieniu mianownik obliczeń Kendall:
i D = N (N - 1)/2. S nazywa się partyturą, a D, mianownikiem, jest maksymalną możliwą wartością S. Kiedy są więzy, formuła dla D jest bardziej skomplikowana (Kendall, 1974, rozdział 3) i to ogólne forum dla więzi w obu rewanżach jest zaimplementowane w naszej funkcji. Wartość p tau w ramach hipotezy zerowej o braku asocjacji jest obliczana w przypadku braku powiązań przy użyciu dokładnego algorytmu podanego przez Best i Gipps (1974). Gdy obecne są wiązania, normalne przybliżenie z korektą ciągłości jest stosowane przez przyjęcie S jako normalnie rozłożonego ze średnim zerem i wariancją var (S), gdzie var (S) jest podany przez Kendall (1976, eqn 4.4, p.55). O ile więzi są bardzo rozległe i/lub dane są bardzo krótkie, to przybliżenie jest wystarczające. Jeśli obecne są rozległe więzy, to bootstrap dostarcza dogodnego rozwiązania (Davis i Hinkley, 1997). Alternatywnie dostępna jest również dokładna metoda oparta na wyczerpującym wyliczaniu (Valz i Thompson, 1994), ale nie jest to zaimplementowane w tym pakiecie.
Pierwotnie dokonałem edycji odpowiedzi Douga na ten temat, ale zostało odrzucone z powodu "skierowania do autora i bardziej odpowiednie jako odpowiedź lub komentarz".Pozostawiłbym to jako komentarz do odpowiedzi, ale moja reputacja nie jest jeszcze na tyle wysoka, aby móc wypowiedzieć się.
robiłem badanie trochę na tau Kendalla. Bezpośrednie użycie cor (x, y, method = "kendall") da ci tau-b Kendalla, który trochę różni się od pierwotnej definicji, tj. Tau-a Kendalla. Tau-b Kendalla jest częściej używany, ponieważ bierze pod uwagę więzi, stąd większość dostępnych pakietów oprogramowania (na przykład cor(), Kendall()) wszystkie obliczają tau-b Kendalla.
Różnica pomiędzy Kendall tau-tau-A i B jest zasadniczo mianownik. Mianowicie, tau-A Kendall mianownik D = n * (n-1)/2, które są stałe, podczas gdy Kendall tau-b mianownik D = sqrt (no. Par Var1 bez wiązanej pary) * sqrt (Nie, pary Var2 z wyłączeniem wiązanych par). Wartość tua-b jest zwykle większa niż tau-a.
Jako prosty przykład, że X = (1,2,3,4,4), Y = (2,3,4,4,4). Tau-b Kendalla = 0,88, a tau-a = 0,7.
Dla Kendalla tau-c, nie widzę zbyt wiele na ten temat, więc nie ma żadnych komentarzy.
- 1. Szyny skojarzeń i formularze
- 2. Jednostki miary w C# - prawie
- 3. Miary jakości klastra
- 4. jak uniknąć skojarzeń polimorficznych
- 5. Szyny - Siewniki skojarzeń HABTM
- 6. W jaki sposób reprezentowane są jednostki miary?
- 7. Jaką jednostkę miary używa Paint.setStrokeWidth()?
- 8. Jednostka miary API w języku Java?
- 9. Jaką jednostkę miary używa LayoutParams?
- 10. Kodyfikacja miary w nazwie pola bazy danych
- 11. Wiązania skojarzeń Source Control Problem
- 12. Liczba spłaszczonych skojarzeń dzieci w LINQ
- 13. Co to jest jednostka miary w Xcode
- 14. Nie można uzyskać wielu skojarzeń
- 15. Kiedy używać klas skojarzeń UML?
- 16. Oznaczone urządzenia skojarzeń w Railsach 3 zerwane
- 17. pisanie skojarzeń dla rekurencyjnej relacji
- 18. Czy jednostki miary powinny być zlokalizowane?
- 19. Jednostki miary modelki z pierwiastkiem kwadratowym
- 20. Dlaczego funkcja @OneToOne umożliwia duplikowanie skojarzeń?
- 21. Której jednostki miary używa Paint.setTextSize (float)?
- 22. Jak usunąć jednostki miary z równania Sass?
- 23. Szyny kwerendy dołączyć tabelę skojarzeń z aliasu
- 24. ActiveAdmin automatycznie ładuje pełną tabelę skojarzeń
- 25. Extjs 5 model danych - ma wiele skojarzeń
- 26. Kiedy używać rozszerzeń skojarzeń względem nazwanych zakresów?
- 27. Jak utworzyć ogólny konwerter dla jednostek miary w C#?
- 28. Jednostka miary dla kolumny Czas trwania w programie SQL Profiler
- 29. Wiele skojarzeń z tym samym modelem w CakePHP 3
- 30. Pokaż dwie jednostki miary na tykach osi w ggplot2
Po obliczeniu tego ręką i porównywania, stwierdziliśmy 'KR (x, y, sposób = "Kendall")' (który znajduje się w zainstalowanym 'pakietu stats') stanowi Kendall tau-b * nie * Tau-a Kendalla. (Przynajmniej od wersji R 3.0.2.) – Firefeather