Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prilagođenje korisničke funkcije

[es] :: Office :: Excel :: Prilagođenje korisničke funkcije

[ Pregleda: 1971 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mirjanagb
mirjana kovacevic
austrija

Član broj: 160826
Poruke: 184
*.bankgutmann.co.at.



+1 Profil

icon Prilagođenje korisničke funkcije17.03.2009. u 14:41 - pre 183 meseci
opet ja ... znam da sam dosadna ... ali ... ako neko zna.

evo najbolje da postavim excel file...

primer 2 funkcionise ... isti je rezultat izracunato i pomocu formule i vba koda

ali primer 1 ne.

da li neko mozda zna kako napisati formulu iz vba koda.
Prikačeni fajlovi
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
194.106.167.*

Sajt: www.gowi.rs


+109 Profil

icon Re: Prilagođenje korisničke funkcije17.03.2009. u 19:20 - pre 183 meseci
Iz primera mi nije jasno o čemu se radi.
Definisala si korisniču funkciju K_tau u okviru modula, koja nešto računa na osnovu dva niza podataka. Iskoristila si tu funkciju u tabeli - formule u ćelijama F46 i M46. Koliko ja razumem u F46 poziva se ova funkcija za primer1, a u M46 za primer 2.
E sad, porediš rezultat te funkcije sa formulama u F43 i M43 - ali obe ove formule koriste primer2? Ista formula
Code:
=+K41/H43

pojavljuje se u obe ćelije. Nije mi jasno kako onda možeš porediti? Takođe ova formula rezultat je vrednosti samo jednog niza (iz kolone G), a u funkciji pozivaš dva niza.

Pokušaj da objasniš šta funkcija tačno treba da radi ako ti treba pomoć oko koda.

[Ovu poruku je menjao Jpeca dana 17.03.2009. u 21:17 GMT+1]
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

mirjanagb
mirjana kovacevic
austrija

Član broj: 160826
Poruke: 184
*.bankgutmann.co.at.



+1 Profil

icon Re: Prilagođenje korisničke funkcije18.03.2009. u 09:56 - pre 183 meseci
da ista formula i na kraju se dobije isti rezultat.
i sad mi nije jasno kako na jednostavnim primerima formula funkcionise, a na komplikovanijim ne.

pa pretpostavljam da u makrou, se mnozi prva i druga kolona, a prvo se oduzimaju brojevi x2-x1, x3-x2 (ili gresim)
(dakle prve kolone i druge kolone)

ja sam to napisala formulom:
=if(L5>L4;L4-L5;0) =if(M5>M4;M4-M5;0)

za prvu i drugu kolonu i onda ih pomnozila.



Code:

Function K_tau(ByVal X1 As Range, ByVal X2 As Range) As Double
Dim i As Long, j As Long, s As Long, n As Long
n = X1.Rows.Count
For i = 1 To n
For j = i To n
If j > i Then
s = s + Sgn((X1.Cells(i, 1) - X1.Cells(j, 1)) * (X2.Cells(i, 1) - X2.Cells(j, 1)))
End If
Next
Next
K_tau = (Application.WorksheetFunction.Combin(n, 2) ^ -1) * s
End Function


ovo n mi je jasno

j mora biti vece od i da bi pokrenulo funkciju s

nije mi jasno sta je ovo s "s" = "s" + Sgn(....

i sta znaci Combin(n, 2)^-1*s

jel to znaci n*2 pa na -1 ili ?


evo sad sam pokusala samo na primeru 2.

pomocu formule (iz knjige), pomocu makroa i pokusaj da makro ja sama uradim. kao sto pise u njemu.

Prikačeni fajlovi
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
*.bisinter.net.

Sajt: www.gowi.rs


+109 Profil

icon Re: Prilagođenje korisničke funkcije18.03.2009. u 10:35 - pre 183 meseci
s je medjurezultat koji se formira za izračunavanje vrednosti funkcije - o čemu se tačno radi ne znam, ali obrati pažnju da zbog sgn u svakoj iteraciji menja za -1,0 ili 1!
Izraz
Code:
Application.WorksheetFunction.Combin(n, 2) ^ -1

je recipročna vrednost broja kombinacija drugog reda od n elemenata. Tj. (n-k)!k!/n! = 2/(n*(n-1))
Deo koda
Code:
 
For j = i To n
If j > i Then 
...
End If
Next

meni nije jasan jer je zbog uslova u For petlji j uvek veće od i osim u prvoj iteraciji, pa mi se čini da je IF nepotrebno
Code:
 
For j = i+1 To n
...
Next



Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

mirjanagb
mirjana kovacevic
austrija

Član broj: 160826
Poruke: 184
*.bankgutmann.co.at.



+1 Profil

icon Re: Prilagođenje korisničke funkcije18.03.2009. u 10:53 - pre 183 meseci
prvo izvinjavam se zbog nejasno napisanog prvog posta ... inace se i poslednjih dana osecam tako nejasno ...


kendal tau, to je ustvari rangiranje, pa npr:


x y Nc Nd

1 2 3 1
2 1 3 0
3 4 1 1
4 5 0 1
5 3 0 0

Nc su brojevi koji su veci od prethodnog broja (kad gledam kolonu y, ispod 2 su 3 broja veca od 2; ispod 1 su 3 brojeva veca)

nd su brojevi manji od prethodnog broja (opet kolona y, ispod 2 je jedan broj manji, ...)

suma nc = 7
suma nd = 3

7-3=4

dalje po formuli imamo 5 brojeva pa bi bilo: 5*(5-1)/2= 10

znaci da je tau= 4/10 = 0,4

isti ova jrezultat dobijem i sa makroom =k_tau((a1:a5);(b1:b5))= 0.4

ali to je jednostavan primer kad je prva kolona od 1 - 5.



[Ovu poruku je menjao mirjanagb dana 18.03.2009. u 13:01 GMT+1]
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
*.bisinter.net.

Sajt: www.gowi.rs


+109 Profil

icon Re: Prilagođenje korisničke funkcije18.03.2009. u 12:49 - pre 183 meseci
Na osnovu onoga što sam našao na wikipedi http://en.wikipedia.org/wiki/Kendall_tau_distance
kod za funkciju mogao bi da bude sledeći:
Code:

Function K_tau(ByVal X1 As Range, ByVal X2 As Range) As Double
' Obracun Kendall Tau distance - mere korelacije
' izmedju dva niz podataka X1 i X2
'
Dim i As Long, j As Long, s As Long, n As Long
n = X1.Rows.Count
For i = 1 To n
  For j = i + 1 To n
   If Sgn(X1.Cells(i, 1) - X1.Cells(j, 1)) <> Sgn(X2.Cells(i, 1) - X2.Cells(j, 1)) Then
      s = s + 1             ' Razlicit redosled elemenat i i j u dva niza
   End If
  Next
Next
K_tau = 2 * s / (n * (n - 1))
End Function

Što se tiče tvoje računice za Nc i Nd pomoću formula u tabeli nisam siguran da to može tako.
U wikipedi Nc i Nd su drugačije definisane. Upoređuju se odgovarajući elementi iz oba niza dok ti u formulama radiš samo sa jednim nizom
(kolona G u primeru 1).
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

mirjanagb
mirjana kovacevic
austrija

Član broj: 160826
Poruke: 184
*.bankgutmann.co.at.



+1 Profil

icon Re: Prilagođenje korisničke funkcije18.03.2009. u 15:10 - pre 183 meseci
http://en.wikipedia.org/wiki/Kendall%27s_tau


da ispadne tacan rezultat, i kad ja uradim peske i preko tvog makroa.

ali ovo je samo u slucaju kad je <

a meni treba i kad je >, dakle korelacija veceg i manjeg.

na ovoj adresi je formula (ta i sa Nc i Nd)

na ovaj tvoj makro, moze li se dodati, dakle i kad je > i onda da se oduzmu ta dva broja i onda da se dobije "s"?
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
194.106.167.*

Sajt: www.gowi.rs


+109 Profil

icon Re: Prilagođenje korisničke funkcije18.03.2009. u 20:32 - pre 183 meseci
Preradio sam funkciju tako da računa Nc i Nd prema definicije Nc i Nd koju sam našao na wikipedi.
Code:

Function K_tau(ByVal X1 As Range, ByVal X2 As Range) As Double
' Obracun Kendall Tau - Kendall's rank correlation
' izmedju dva niz podataka X1 i X2
'
Dim i As Long, j As Long, n As Long
Dim Nc As Long, Nd As Long
n = X1.Rows.Count
For i = 1 To n
  For j = i + 1 To n
   If Sgn(X1.Cells(i, 1) - X1.Cells(j, 1)) = Sgn(X2.Cells(i, 1) - X2.Cells(j, 1)) Then
      Nc = Nc + 1  ' saglasni par
   Else
      Nd = Nd + 1  ' nesaglasni par
   End If
  Next
Next
K_tau = 2 * (Nc - Nd) / (n * (n - 1))
End Function


Uporedio sam rezultate sa nekim primerima na mreži (npr. http://www.statsdirect.com/help/nonparametric_methods/kend.htm) i pokazalo se slaganje. Bilo bi puno lakše da si na početku jasno opisala način dolaženja do potrebnog rezultata na nekom primeru.







Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

mirjanagb
mirjana kovacevic
austrija

Član broj: 160826
Poruke: 184
*.bankgutmann.co.at.



+1 Profil

icon Re: Prilagođenje korisničke funkcije19.03.2009. u 09:16 - pre 183 meseci
znam, zato se izvinjavam jos jednom ....

e to je ono sto trazim ... dosta je lakse za razumeti, a potom objasniti ...

hvala puno na ulozenom trudu !!!!
!!!
 
Odgovor na temu

[es] :: Office :: Excel :: Prilagođenje korisničke funkcije

[ Pregleda: 1971 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.