Analisi della varianza

keiichi1
Devo fare un esercizio di analisi della varianza con il software R ma, ad un certo punto, non riesco più ad andar avanti.
Posto la traccia in allegato


Io procedo in questo modo:
#Inserimento valori nell'array peso
> peso=c(24.6, 24.2, 22.2, 27.2, 23.2, 24.8, 38.6, 39.5, 33.0, 39.5, 43.1, 45.2)
#Si verifica che i valori appartngano ad una distribuzione normale
> ks.test(peso, pnorm, mean(peso), sd(peso))

	One-sample Kolmogorov-Smirnov test

data:  peso
D = 0.21772, p-value = 0.6201
alternative hypothesis: two-sided

Warning message:
In ks.test(peso, pnorm, mean(peso), sd(peso)) :
  ties should not be present for the Kolmogorov-Smirnov test

#Il p-value è superiore a 0.05. I dati apaprtengono ad una distribuzione normale

> luce=gl(2,2,labels=c("Poca", "Molta"))
> gabbia=gl(2,3,12, labels=c("Piccole", "Grande"))
> fit=aov(peso~luce+gabbia)
Error in model.frame.default(formula = peso ~ luce + gabbia, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'luce')


Che errore sto facendo? Come devo procedere ora?
Grazie

Risposte
keiichi1
Ho corretto tutto nel seguente modo
> peso=c(24.6,38.6, 24.2,39.5, 22.2,33.0, 27.2,39.5, 23.2,43.1, 24.8,45.2)
ks.test(peso, pnorm, mean(peso), sd(peso))

	One-sample Kolmogorov-Smirnov test

data:  peso
D = 0.21772, p-value = 0.6201
alternative hypothesis: two-sided

Warning message:
In ks.test(peso, pnorm, mean(peso), sd(peso)) :
  ties should not be present for the Kolmogorov-Smirnov test

> luce=gl(2,6, labels=c("Poca", "Molta"))
> gabbie=gl(2,3,12, labels=c("Piccole", "Grandi"))
> fit=aov(peso~luce+gabbie)
> fit
Call:
   aov(formula = peso ~ luce + gabbie)

Terms:
                    luce   gabbie Residuals
Sum of Squares   36.4008  77.5208  704.4475
Deg. of Freedom        1        1         9

Residual standard error: 8.847143
Estimated effects may be unbalanced


Mi direste se secondo voi è corretto?
Grazie

dasalv12
Sulla procedura:
il test di normalità è superfluo (peraltro la numerosità campionaria è talmente bassa che sarebbe comunque imprudente usarlo).

Sui codici:
non so come vi hanno insegnato R, però te la caveresti meglio usando le funzioni rep e anova in tre righe di codice ed in modo meno contorto. A quel punto sta a te interpretare l'output il cui risultato dovrebbe essere banale.

keiichi1
Scusa, non capisco.
La funzione rep replica un determinato dato un certo numero di volte.
Esempio:
> rep("a", 5)
[1] "a" "a" "a" "a" "a"


Come la dovrei utilizzare nel mio caso?

dasalv12
...ma niente, con rep creavi direttamente le categorie in un'unica stringa, ma va bene anche così, non cambia nulla, l'importante è l'output finale.

keiichi1
Non c'è un modo per vedere se i dati sono stati inseriti correttamente?

keiichi1
"keiichi":
Non c'è un modo per vedere se i dati sono stati inseriti correttamente?


Ho cambiato leggermente i dati inseriti nel seguente modo:
> peso=c(24.6, 24.2, 22.2, 38.6, 39.5, 33.0, 27.2, 23.2, 24.8, 39.5, 43.1, 45.2)
> luce=gl(2, 6, labels=c("Poca", "Molta"))
> gabbia=gl(2, 3, 12, labels=c("Piccole", "Grande"))


Per vedere se i dati sono inseriti correttamente ho fatto così:
> data.frame(luce, gabbia, peso)
    luce  gabbia peso
1   Poca Piccole 24.6
2   Poca Piccole 24.2
3   Poca Piccole 22.2
4   Poca  Grande 38.6
5   Poca  Grande 39.5
6   Poca  Grande 33.0
7  Molta Piccole 27.2
8  Molta Piccole 23.2
9  Molta Piccole 24.8
10 Molta  Grande 39.5
11 Molta  Grande 43.1
12 Molta  Grande 45.2


Ho anche visualizzato il tutto mediante un boxplot:
> mydata = data.frame(luce, gabbia, peso)
> boxplot(peso~luce+gabbia, mydata)


Mi chiedo, tuttavia, se non sia possibile evidenziare i valori nel boxplot stesso

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.