데이터 프레임의 모든 고유 사이트에 대한 풀 (실제로 가중치 적용) 표준 편차를 계산하고 싶습니다.R에서 풀 표준 편차를 계산하는 방법?
이 사이트의 값은 단일 종 숲 스탠드의 값이며 평균값과 sd를 모아서 침착 물 스탠드와 폭 넓은 스탠드를 비교할 수 있습니다.
이것은 된 Broadleaved 스탠드 값과 데이터 프레임 (DF)가있다 :
keybl n mean sd
Vest02DenmDesp 3 58.16 6.16
Vest02DenmDesp 5 54.45 7.85
Vest02DenmDesp 3 51.34 1.71
Vest02DenmDesp 3 59.57 5.11
Vest02DenmDesp 5 62.89 10.26
Vest02DenmDesp 3 77.33 2.14
Mato10GermDesp 4 41.89 12.6
Mato10GermDesp 4 11.92 1.8
Wawa07ChinDesp 18 0.097 0.004
Chen12ChinDesp 3 41.93 1.12
Hans11SwedDesp 2 1406.2 679.46
Hans11SwedDesp 2 1156.2 464.07
Hans11SwedDesp 2 4945.3 364.58
Keybl 사이트에 대한 코드이다. 풀링 된 SD에 대한 공식은 다음과 같습니다
s=sqrt((n1-1)*s1^2+(n2-1)*s2^2)/(n1+n2-2))
2
그룹의 수이고, 따라서 (내가 사진을 게시 할 수 없습니다 직접 공식에 갈 것 링크를 찾을 수 없습니다 죄송합니다) 사이트에 따라 변경됩니다. 나는 이것이 t-test에 사용되고 두 그룹이 비교하기를 원한다는 것을 안다. 이 경우 나는 이들 그룹을 비교할 계획이 아닙니다. 교수님은이 공식을 사용하여 가중치 적용 SD를 얻으라고 제안했습니다. 나는 내가 필요로하는 방식으로이 공식을 통합 한 R 함수를 찾지 못했고, 그래서 나는 내 자신을 만들려고 노력했다. 그러나 저는 R에 익숙하지 않고 함수와 루프를 만드는 데별로 능숙하지 않으므로 여러분의 도움을 바랍니다.
이것은 내가 지금까지 무엇을 가지고 있습니다 : 그것은 약간 낮은 값이해야 내가 왜 이해하지 못하는 이상을 제공으로
sd=function (data) {
nc1=data[z,"nc"]
sc1=data[z, "sc"]
nc2=data[z+1, "nc"]
sc2=data[z+1, "sc"]
sd1=(nc1-1)*sc1^2 + (nc2-1)*sc2^2
sd2=sd1/(nc1+nc2-length(nc1))
sqrt(sd2)
}
splitdf=split(df, with(df, df$keybl), drop = TRUE)
for (c in 1:length(splitdf)) {
for (i in 1:length(splitdf[[i]])) {
a = (splitdf[[i]])
b =sd(a)
}
}
1) 함수 자체가 올바르지 않습니다. z + 1이 마지막 행에 도달했을 때 멈추지 않을 수 있습니까? 그렇다면 어떻게 수정 될 수 있습니까?
2) 루프가 완전히 잘못되었지만 몇 시간 동안 성공하지 못했을 때 다시 생각해 낼 수 있습니다.
아무도 도와 줄 수 있습니까?
감사합니다,
Antra 당신이 그것을 쉽게 할 것이다보다 일반적인 식에 도움이 될 뭘 하려는지
: S = SQRT의 (((N1-1) S1 *^2 + (n2-1) S2 *^2)/(N1 + n2-2)) –