la confiance et la prédiction des intervalles de StatsModels
Je fais ce linear regression
avec StatsModels
:
import numpy as np
import statsmodels.api as sm
from statsmodels.sandbox.regression.predstd import wls_prediction_std
n = 100
x = np.linspace(0, 10, n)
e = np.random.normal(size=n)
y = 1 + 0.5*x + 2*e
X = sm.add_constant(x)
re = sm.OLS(y, X).fit()
print(re.summary())
prstd, iv_l, iv_u = wls_prediction_std(re)
Mes questions sont, iv_l
et iv_u
sont le haut et le bas intervalles de confiance ou prédiction des intervalles de?
La façon dont je reçois les autres?
J'ai besoin de la confiance et de la prédiction des intervalles pour tous les points, faire un complot.
- Pour user333700 - Non, l'intervalle de prédiction et de l'intervalle de confiance sont des choses différentes. Voir, par exemple, à la page 275 de "Appliqué la Régression Linéaire", par S. WEISBERG ou "l'Analyse de Régression Linéaire" par G. Seber et A. Lee. J'ai toujours pas trouvé une façon simple de calculer en Python, mais il peut être fait dans la R très simplement.
Vous devez vous connecter pour publier un commentaire.
mise à jour voir la deuxième réponse qui est plus récente. Certains des modèles et des résultats des classes ont maintenant un
get_prediction
méthode qui fournit des renseignements additionnels, y compris la prédiction des intervalles et/ou les intervalles de confiance pour la predicted mean.vieille réponse:
iv_l
etiv_u
vous donner les limites de l'intervalle de prévision pour chaque point.Intervalle de prédiction est l'intervalle de confiance pour une observation et inclut l'estimation de l'erreur.
Je pense, l'intervalle de confiance pour la moyenne de prédiction n'est pas encore disponible dans
statsmodels
.(En fait, l'intervalle de confiance pour les valeurs ajustées se cache à l'intérieur de la summary_table de influence_outlier, mais j'ai besoin de vérifier.)
Correcte des méthodes de prédiction pour statsmodels sont sur la liste des tâches.
Plus
Les intervalles de confiance sont là pour LO, mais l'accès est un peu maladroit.
Être inclus après l'exécution de votre script:
Cela devrait donner les mêmes résultats que SAS, http://jpktd.blogspot.ca/2012/01/nice-thing-about-seeing-zeros.html
predict_mean_ci_low
etpredict_mean_ci_upp
vont être déchiqueté/pointu lorsque tracées parce qu'ils n'existent que dans les valeurs ajustées, au lieu d'une gamme de points. Cependant, l'ajustement de la ligne est définie pour tous les points. Il y a un commentaire qui ditusing hat_matrix only works for fitted values
dans github.com/statsmodels/statsmodels/blob/master/statsmodels/... - aucune idée de comment la contourner?Des données de test, vous pouvez essayer d'utiliser les éléments suivants.
J'ai trouvé le summary_frame() la méthode enterré ici et vous pouvez trouver les get_prediction() la méthode ici. Vous pouvez modifier le niveau de signification de l'intervalle de confiance et l'intervalle de prédiction en modifiant le "alpha" de paramètre.
Je vous poste ça ici parce que c'est le premier post qui arrive lorsque vous cherchez une solution pour la confiance & prédiction des intervalles – même si cela concerne des données de test plutôt.
Voici une fonction pour faire un modèle, de nouvelles données, et l'arbitraire d'un quantile, à l'aide de cette approche:
TypeError: 'builtin_function_or_method' object is not iterable
). J'ai soulevé une question sur github: github.com/statsmodels/statsmodels/issues/4437out_of_sample_df
? Ou plus généralement, quels sont les paramètres neget_prediction()
prendre? Quand j'ai essayer de l'alimenter par ex. valeurs de x pour la prédiction, ilValueError
s à l'extérieur.Vous pouvez obtenir les intervalles de prédiction en utilisant LRPI() de la classe à partir de la Ipython notebook dans mon repo (https://github.com/shahejokarian/regression-prediction-interval).
Vous devez définir la valeur t pour obtenir le désiré de l'intervalle de confiance pour la prédiction des valeurs, sinon la valeur par défaut est de 95% conf. d'intervalle.
La LRPI classe utilise sklearn.linear_model de LinearRegression , numpy et les pandas bibliothèques.
Il y a par exemple montré dans le cahier de trop.
summary_frame
etsummary_table
bien travailler quand vous en avez besoin à des résultats exacts pour un seul quantile, mais ne pas vectoriser bien. Cela permettra de fournir une approximation normale de l'intervalle de prédiction (pas d'intervalle de confiance) et travaille pour un vecteur de quantiles:Vous pouvez les calculer sur la base des résultats donnée par statsmodel et la normalité des hypothèses.
Voici un exemple pour le MCO et de CI pour la valeur moyenne:
Vous pouvez enrouler une belle fonction autour de ce avec la participation des résultats, point x0 et niveau de signification sl.
Je ne suis pas sûr maintenant, si vous pouvez l'utiliser pour WLS() car il y a des choses qui s'y passe.
Ref: Ch3 dans [DC Montgomery et E. A. Peck. “Introduction à l'Analyse de Régression Linéaire.” 4e. Ed., Wiley, 1992].