You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制earnings与education散点图及OLS回归时出现“标识符含无效字符”报错求助

问题排查与修正方案

嘿,我帮你找到了触发“invalid character in identifier”错误的核心原因,还有几个语法小问题,咱们一步步来解决:

1. 核心错误分析

你的代码里有两个关键问题直接导致了报错:

  • 中文标点问题:公式参数里用了中文单引号(’education~earnings),Python只认英文的单引号(')或双引号("),中文引号会被当成无效字符,这就是报错的根源。
  • 函数调用语法错误:smf.ols()的括号位置不对,formula的引号没闭合,而且data=mydata应该放在函数的括号里面,原代码把括号写在了data=mydata后面,导致整个函数调用的结构混乱。

2. 修正后的完整代码

我把所有问题都修正了,还加了点小优化让代码更简洁:

import statsmodels.formula.api as smf
import matplotlib.pyplot as plt

# 先确保mydata已经正确加载(比如用pandas.read_csv加载你的数据源文件)
mod = smf.ols(formula='education ~ earnings', data=mydata)  # 修正了引号和括号位置
res = mod.fit()
print(res.summary())  # 用print包裹,确保在脚本环境也能正常显示回归结果
beta = res.params

# 绘制散点图和拟合线
plt.scatter(mydata["education"], mydata["earnings"], color="black")
plt.plot(mydata["education"], res.fittedvalues, "r")
plt.ylabel("earnings")
plt.xlabel("education")
plt.title("Scatterplot earnings versus education")
plt.show()

3. 额外小贴士

  • 导入matplotlib.pyplot时用别名plt是Python社区的通用做法,能减少重复代码。
  • 如果你之前绘图也报错,大概率也是标点或者变量名的问题,现在用修正后的代码应该能正常运行了。
  • 记得确认mydata是正确加载的Pandas DataFrame,比如通过pd.read_csv("你的数据源路径")加载,不然即使语法对了,也会因为数据问题报错。

内容的提问来源于stack exchange,提问作者Nesrine Tiar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 17:07:34