Closed giuseppeegentile closed 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)
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
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.
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:
# 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
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
Ok effettivamente si, ha senso considerarla additività e non interazione, thx.
Testo:
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