giuseppeegentile / AppStatExams

1 stars 0 forks source link

Struttura a gruppi indotta da più categorial variable insieme #24

Closed giuseppeegentile closed 5 months ago

giuseppeegentile commented 5 months ago

Testo: immagine

Non sono ultra sicuro della mia soluzione, soprattutto sul come esprimere la struttura a gruppi con due classi. Devo per forza creare la dummy variable secondo voi o posso procedere sommando i due contributi? https://github.com/giuseppeegentile/AppStatExams/blob/d9907b20d1f97a21ebfc7090fe233b0d898cedfb/2018/28062018/Pb4.R#L44-L51

Filippobuda commented 5 months ago

Come hai fittato il modello dovrebbe andare bene, ma secondo me i beta sono questi: (newtime è la funzione del tempo)

fit <- lm(price ~ Position + Season +Position:newtime+ Season:newtime)
summary(fit)

 beta0.0 = 75.489                        (no position and no season, the intercept)
 beta0.1 = 75.489 + 36.032               (Position=Seafront)
 beta0.2 = 75.489 -32.468                (Season=WetSeason)
 beta0.3 = 75.489 +36.082 -32.468        (Position=Seafront AND Season=WetSeason)
 beta1.0 = 74.452                        (no position and no season, just the effect of the time variable)
 beta1.1 = 74.452 + 66.293               (Position=Seafront, interaction with time)
 beta1.2 = 74.452 - 5.204                (Season= WetSeason, interaction with time)
 beta1.3 = 74.452 + 66.293 - 5.204       (Position=Seafront AND Season= WetSeason, interaction with time)
giuseppeegentile commented 5 months ago

Questo non sarebbe il modello con interazione? Il testo lo chiedeva senza quindi non ho considerato solo il contributo di position e season per i coefficienti.

                                            Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                   75.489      3.419  22.079  < 2e-16 ***
PositionSeafront                              36.032      4.081   8.830 2.56e-13 ***
SeasonWetSeason                              -32.468      5.232  -6.206 2.53e-08 ***
Position:I(1 + cos(4 * pi * t/365))           74.452      2.466  30.193  < 2e-16 ***
PositionSeafront:I(1 + cos(4 * pi * t/365))   66.293      2.243  29.552  < 2e-16 ***
SeasonWetSeason:I(1 + cos(4 * pi * t/365))    -5.204      4.700  -1.107    0.272    

Mentre sono d'accordo con te sui livelli, ma a guardare dal summary solo beta1.1 andrebbe sommato, o mi sto perdendo qualcosa?

 beta0.0 = 75.489 
 beta0.1 = 75.489 + 36.032 
 beta0.2 = 75.489 - 32.468 
 beta1.0 = 74.452 
 beta1.1 =  74.452+ 66.293 
 beta1.2 = - 5.204 
Filippobuda commented 5 months ago

Allora non ho capito la traccia, quindi vorrebbe semplicemente che gli scrivessi i beta del modello senza interazione? Mi sembra strano perché comunque se lo fitti con quella formula nella stima dei beta la tiene in considerazione.

Per quanto riguarda beta1.2 direi che va sommato anche quello. Quando R vede delle variabili categoriche nella formula dell'lm crea una dummy variable binaria con 1 il valore del secondo livello. Per le prime 3 entry del summary mi torna bene. Nelle seconde tre ho avuto un po' di dubbi causa la sintassi Position:I(...). Ho pensato che fosse comunque una specie di intercetta che rappresenta il contributo del tempo quando entrambi i valori di position e seasonality sono a 0. Quindi nel contributo di beta 1.2 andrebbe considerata. Però dato il nome Position:I(...) ho ancora dei dubbi sinceramente.

In ogni caso ti rimando al libro ",Introduction to Statistical Learning" dove fa un esempio con due dummy variables, però riferite a una variabile con 4 livelli.

giuseppeegentile commented 5 months ago

A giudicare dal summary non considera l'interazione tra Position e Season (non compare mai PositionSeason). Secondo me il testo voleva che considerassimo Position e Season separati (e per questo sarebbe diverso dal caso dell'ISLR, se ti riferisci a pag.119).

In più, considerando la funzione del tempo separata dalle categorical, e poi aggiungendole: fm <- lm(y ~ Position + Season +I(1+cos(4*pi*t/365))+ Position:I(1+cos(4*pi*t/365))+ Season:I(1+cos(4*pi*t/365)),data=data) Il summary viene più chiaro e penso ci voglia indicare che dobbiamo trattare Position:I(...) come intercetta (confermando quello che dicevi sopra).

Il calcolo dei coefficienti definitivo dovrebbe essere questo: immagine

# beta0.0 = 75.489
# beta0.1 = 75.489 + 36.032
# beta0.2 = 75.489 -32.468
# beta1.0 = 74.452
# beta1.1 = 74.452 - 8.159
# beta1.2 = 74.452 - 5.204
Filippobuda commented 5 months ago

Confermo l'ultimo calcolo che hai fatto. Solo non mi torna il caso in cui un sample ha sia Season=WetSeason che Position=Seafront. In quel caso stando al modello che abbiamo fittato dovrebbe comparire anche un altro beta che somma l'intercetta e i coefficienti di PostionSeafront e di SeasonWetSeason. Non lo considerei un caso di interazione, ma di addittività ( per metterla in termini di 2-way (M)ANOVA ). Quindi ti direi di metterlo lo stesso e a questo punot i beta dovrebbero essere 8.

Inoltre noto che quando in questo summary :

                                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                                   75.489      3.419  22.079  < 2e-16 ***
PositionSeafront                              36.032      4.081   8.830 2.56e-13 ***
SeasonWetSeason                              -32.468      5.232  -6.206 2.53e-08 ***
Position:I(1 + cos(4 * pi * t/365))           74.452      2.466  30.193  < 2e-16 ***
PositionSeafront:I(1 + cos(4 * pi * t/365))   66.293      2.243  29.552  < 2e-16 ***
SeasonWetSeason:I(1 + cos(4 * pi * t/365))    -5.204      4.700  -1.107    0.272   

la notazione Position:I(...) è un po' particolare. Nel senso che a questo punto indica il contributo nel caso Position NON sia Seafront (e quindi se position non è seafront -> 74.452 + se season=wetseanon -5.204), come si nota anche dal tuo summary in cui la variabile I(..) è inserita da sola, ma allo stesso tempo nel momento in cui Position=Seafront, allora l'unico contributo da prendere in considerazione è PositionSeafront:I(...) (=66.293=74.452 - 8.159 nel tuo summary con time separato). Ripeto la lista di coefficienti che farei io:

 beta0.0 = 75.489                        (no position and no season, the intercept)
 beta0.1 = 75.489 + 36.032               (Position=Seafront)
 beta0.2 = 75.489 -32.468                (Season=WetSeason)
 beta0.3 = 75.489 +36.082 -32.468        (Position=Seafront AND Season=WetSeason)
 beta1.0 = 74.452                        (no position and no season, just the effect of the time variable)
 beta1.1 = 66.293               (Position=Seafront, interaction with time)
 beta1.2 = 74.452 - 5.204                (Season= WetSeason, interaction with time)
 beta1.3 = 66.293 - 5.204       (Position=Seafront AND Season= WetSeason, interaction with time)

In generale preferirei il tuo modello dato che il summary è più chiaro

giuseppeegentile commented 5 months ago

Ok effettivamente si, ha senso considerarla additività e non interazione, thx.