statsmodels.formula数据使用predict()

运行statsmodels.formula.api.ols得到了一些回归结果。下面是一个玩具示例:

import pandas as pd
import numpy as np
import statsmodels.formula.api as smf

example_df = pd.DataFrame(np.random.randn(10, 3))
example_df.columns = ["a", "b", "c"]
fit = smf.ols('a ~ b', example_df).fit()

我想将模型应用于列c,但天真的尝试是行不通的:

fit.predict(example_df["c"])

我得到一个例外:

PatsyError: Error evaluating factor: NameError: name 'b' is not defined
    a ~ b
        ^

我可以做一些粗制滥造的事情,创建一个新的、临时的DataFrame,其中我重命名了感兴趣的列:

example_df2 = pd.DataFrame(example_df["c"])
example_df2.columns = ["b"]
fit.predict(example_df2)
这段代码使用了Python中的pandas、seaborn、matplotlib、scipy和statsmodels库来绘制销售收入与广告支出的散点图,并进行相关系数与显著性检验。具体的代码解释如下: 1. 首先导入需要使用的库: ``` import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from scipy.stats import pearsonr from statsmodels.formula.api import ols ``` 2. 读取数据文件example1.csv,并使用seaborn库中的jointplot方法绘制散点图。其中,x和y分别为广告支出和销售收入的列名,kind为图形类型,truncate为是否截断数据,color为散点颜色,height和ratio为图形的高度和宽高比,marginal_ticks为是否显示坐标轴刻度。 ``` example1 = pd.read_csv("E:\数学建模学习文件\python学习\可视化处理及图像\对应的表格\example1.csv", encoding='gbk') fig = sns.jointplot(x="广告支出", y="销售收入", data=example1, kind="reg", truncate=True, color="steelblue",height=6,ratio=3,marginal_ticks=1) ``` 3. 计算相关系数和显著性检验,并输出结果。其中,pearsonr方法计算相关系数,返回值为相关系数和p值。 ``` corr, p_value = pearsonr(example1['销售收入'], example1['广告支出']) print(f"二者的相关系数为{corr: .4g},检验的p值为{p_value: .4g}") ``` 4. 使用statsmodels库中的ols方法进行回归分析,并输出回归结果。其中,"销售收入~广告支出"表示使用广告支出来预测销售收入。 ``` model = ols("销售收入~广告支出",data=example1).fit() print(model.summary()) ``` 5. 预测销售收入,并输出结果。 ``` ypred=model.predict(example1['广告支出']) print(ypred) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值