我对R和Python都很陌生,并试图比较与回归分析残差相关的计算结果.我想知道什么是"错误的",或者如何"解释"它(即它是否是预期的东西).请注意,R和Python使用相同的数据.
R代码
# data
y <- c(3.099999905, 3.24000001, 3, 6, 5.300000191,
8.75, 11.25, 5, 3.599999905, 18.18000031)
x <- c(11, 12, 11, 8, 12, 16, 18, 12, 12, 17)
df <- data.frame(wage = y, educ = x)
# OLS
mod <- lm(wage ~ educ, data=df)
summary(mod)
# residuals
u.hat <- resid(mod)
mean(u.hat)
var(u.hat)
sd(u.hat)
cor(df$educ, u.hat)
Run Code Online (Sandbox Code Playgroud)
Python代码
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
# data
y = pd.Series([3.099999905, 3.24000001, 3, 6, 5.300000191,
8.75, 11.25, 5, …Run Code Online (Sandbox Code Playgroud) 在R 中,如果我想根据另一列1和YES/NO 创建一个新列0,以下代码符合我的目的。
df <- data.frame(alpha = c(50, 51, 52), beta = c(1,0,1))
df$gamma <- factor(df$beta, label = c('no','yes'))
alpha beta gamma
1 50 1 yes
2 51 0 no
3 52 1 yes
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在Python 中做同样的事情。任何人都可以完成以下代码或建议不同的方法吗?
import pandas as pd
df = pd.DataFrame({'alpha': [50, 51, 52], 'beta': [1,0,1]})
df['gamma'] = ??????
Run Code Online (Sandbox Code Playgroud)
提前致谢。(越简单越好)
我想绘制一个由以下定义的垂直平面
5 = x + y
在 3D 图形中,使用 Matplotlib。
我看过这个和这个,但没有机会。我也在这个链接上找到mpl_toolkits.mplot3d.art3d.line_2d_to_3d了,上面写着
将 2D 线转换为 3D
对我来说看起来很有希望,但我不知道如何使用它。
现在,您将如何修改以下代码来实现我的目标?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
xs = np.linspace(0, 10, 100)
ys = np.linspace(0, 10, 100)
X, Y = np.meshgrid(xs, ys)
Z # ?????????
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)
plt.show()
Run Code Online (Sandbox Code Playgroud)
感谢您提前提供帮助。
在下面的代码中,我创建了一个函数来返回一个DataFrame,其中一个新的列new_col具有一个周期移位值ori_col.但是,输出的新列具有名称new_col而不是B.我在这里错过了什么?
import pandas as pd
def add_col_diff(dframe, ori_col, new_col):
shift_1 = dframe[ori_col].shift(1)
return dframe.assign(new_col=shift_1)
data = {'A': [10, 11, 12]}
df = pd.DataFrame.from_dict(data)
df = add_col_diff(df, 'A', 'B')
df
Run Code Online (Sandbox Code Playgroud)
这给了
A new_col
0 10 NaN
1 11 10.0
2 12 11.0
Run Code Online (Sandbox Code Playgroud) 我使用Mathematica和Python计算了以下内容.
Mathematica具有以下代码
f[x_] = a*b/(a - b)^2*Exp[-r*x] (Exp[-b*x] - Exp[-a*x]) (a*Exp[-b*x] - b*Exp[-a*x])
Assuming[{a > 0, b > 0, r > 0}, Integrate[f[x], {x, 0, \[Infinity]}]]
Run Code Online (Sandbox Code Playgroud)
给出了相当不错的结果:
但是,以下Python(带SymPy)代码
from sympy import *
init_printing()
x = symbols('x')
a, b, r = symbols('a b r', positive=True)
fun = a*b/((a-b)**2) * exp(-r*x) * (exp(-b*x) - exp(-a*x)) * (a*exp(-b*x) - b*exp(-a*x))
simplify(integrate(fun, (x, 0, oo)))
Run Code Online (Sandbox Code Playgroud)
产生一个相当混乱的结果:
我在Python代码中缺少什么才能在Mathematica中获得相同的结果?或者它可能吗?