숫자가있는 행렬 (크기 : 28 열 47 행)이 있습니다. 이 행렬에는 열 머리글 ("ordinal"및 "nominal")이 포함 된 추가 행이 있습니다.Gower 거리 함수 구현
이 행렬에 Gower 거리 함수를 사용하고 싶습니다.
i 번째와 j 번째의 단위 사이의 최종 차이도가 각 변수에 대한 비 유사성의 가중 합으로서 얻어진다 : Here가 있다고 특히
d(i,j) = sum_k(delta_ijk * d_ijk)/sum_k(delta_ijk)
, d_ijk i 번째와 j 번째까지의 거리를 나타낸다 단위는 k 번째 변수를 고려하여 계산됩니다. 그것은 변수의 특성에 따라 달라집니다
인자 또는 문자 열이 범주 명목 변수로 간주하고
경우d_ijk = 0
x_ik = x_jk, 1, 그렇지 않으면
명령 열 범주 순서 변수와
값이 계수 레벨에
대응 위치 인덱스 r_ik 치환으로 간주된다./-합니다 (R 함수 순위의 출력 다르다)이 위치
인덱스는 다음과 같이
z_ik = (1 r_ik)로 변환
이다 (최대 (r_ik) - 1)
이러한 새 값 z_ik는
간격 조정 변수의 관측 값으로 처리됩니다.
한국인 중량 delta_ijk 관한 같이
- delta_ijk = 0이 x_ik NA = 또는 = x_jk NA;
- delta_ijk = 1입니다.
나는 gower.dist 기능이 있음을 알고 있지만 그렇게해야합니다. 그래서 "d_ijk", "delta_ijk"및 "z_ik"에 대해 더 나은 방법을 찾지 못해 기능을 만들려고했습니다.
나는 "delta_ijk"로 시작하고 난이 시도 :Delta=function(i,j){for (i in 1:28){for (j in 1:47){
+{if (MyHeader[i,j]=="nominal")
+ result=0
+{else if (MyHeader[i,j]=="ordinal") result=1}}}}
+;result}
을하지만 오류가 발생했습니다. 그래서 나는 붙어있어 나머지는 할 수 없어.
P. 실례지만 실수하면 영어가 자주 사용되는 언어가 아닙니다.
zip 또는 tar.gz 파일로 데이터를 다시 게시 할 수 있습니까? 내 리눅스 박스는 rar 아카이브를 열지 않고 어떤 응용 프로그램을 열 것인지를 알기위한 길이로 나간다. 그렇게한다면 기꺼이 볼 수 있습니다. –