Je veux comparer deux modèles linéaires imbriqués, appelons-les m01, et m02 où m01 est le modèle réduit et m02 est le modèle complet. Je veux faire un simple test F pour voir si le modèle complet ajoute une utilité significative sur le modèle réduit.Comment effectuer un test F pour comparer des modèles linéaires imbriqués en Python?
Ceci est très simple dans R. Par exemple:
mtcars <- read.csv("https://raw.githubusercontent.com/focods/WonderfulML/master/data/mtcars.csv")
m01 <- lm(mpg ~ am + wt, mtcars)
m02 <- lm(mpg ~ am + am:wt, mtcars)
anova(m01, m02)
me donne la sortie suivante:
Ce qui me dit que l'ajout du h: poids terme d'interaction significative améliore le modèle. Est-il possible de faire quelque chose de similaire dans Python/sklearn/statsmodels?
Modifier: J'ai regardé this question avant de poster celui-ci et ne peux pas comprendre comment ils sont identiques. L'autre question est de faire un test F sur deux vecteurs. Cette question concerne la comparaison de 2 modèles linéaires imbriqués.
Je pense que ce que je dois:
mais ne suis pas sûr exactement de passer cette fonction. Si quelqu'un pouvait fournir ou donner un exemple, cela serait extrêmement utile.
Vous pouvez sklearn.model_selection http://scikit-learn.org/stable/modules/classes.html#module-sklearn.model_selection de f_regression import sklearn.feature_selection –
la marque en double est incorrect. Comme mentionné dans le montage, ce sont deux tests f différents. – user333700
pour la réponse, voir statsmodels anova_lm http://www.statsmodels.org/dev/anova.html pour comparer les modèles imbriqués, les résultats OLS ont également trois méthodes compare_xxx_test pour le test direct d'un imbriqué restreint par rapport au modèle non restreint. http://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.OLSResults.html – user333700