2014-04-06 50 views
0

我已經在R中編寫了一些函數,它們具有不同的樣本大小,並且希望對每個樣本大小都有一個anova擬合。請任何人都可以幫助我如何編寫一個代碼,爲其中的每一個做一次代碼? ns表示不同的樣本大小。如何寫不同樣本大小的函數來完成相同任務

ns=c(16,18,22,30) 
x=rnorm(ns/2,2,5) 
y=rnorm(ns/2,0,1) 
yy=c(y,x) 
xx=c(rep(0,ns/2),rep(1,ns/2)) 
fitt=lm(yy~xx) 
anova(fitt) 
(ns/2-1)*var(x)+(ns/2-1)*var(y))/((2*ns/2)-2) 
+0

什麼是您正在尋找的輸出?整個'anova'或者它的一些部分?此外,這條線是做什麼的,你是否也需要它的輸出? '(NS/2-1)* VAR(X)+(NS/2-1)* VAR(Y))/((2個* NS/2)-2)'。請發佈一個期望的輸出 –

+0

好吧,請拿出最後一條語句,但我想要的是anova(fitt)爲16,即18等到30,寫一個程序做一次而不是一個接一個。 – user3407190

回答

0

這樣的事情?

loopAnovafunc <- function(temp) { 
    x <- rnorm(temp/2,2,5) 
    y <- rnorm(temp/2,0,1) 
    yy <- c(y,x) 
    xx <- c(rep(0,temp/2),rep(1,temp/2)) 
    fitt <- lm(yy~xx) 
    anova(fitt) 
} 

ns <- c(16,18,22,30) 
lapply(ns, loopAnovafunc) 
+0

謝謝大衛,但請你解釋一下輸出的最後部分 – user3407190

+0

我已經編輯了答案,現在試試 –

+0

非常感謝大衛。非常感謝 – user3407190

相關問題