小编T_T*_*T_T的帖子

R和Python回归库之间的计算差异

我对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)

python regression r

5
推荐指数
0
解决办法
55
查看次数

Python - 如何将 1/0 转换为是/否(在 pandas.DataFrame 中)?

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)

提前致谢。(越简单越好)

python r pandas

5
推荐指数
1
解决办法
3092
查看次数

Matplotlib:如何在 3D 图形中绘制垂直平面

我想绘制一个由以下定义的垂直平面

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)

感谢您提前提供帮助。

python matplotlib

3
推荐指数
1
解决办法
3082
查看次数

Python:使用assign()的函数中的新列名

在下面的代码中,我创建了一个函数来返回一个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)

python function dataframe pandas

2
推荐指数
1
解决办法
640
查看次数

Python(+ SymPy):如何获得与Mathematica相同的结果?

我使用MathematicaPython计算了以下内容.

在此输入图像描述

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中获得相同的结果?或者它可能吗?

python wolfram-mathematica sympy

1
推荐指数
1
解决办法
57
查看次数