# Integrationsgewichte (später hinterfragen...)
me.G5 = read.csv('xy.csv',sep=';',header=FALSE)[,2:3]
me.x = me.G5[,1]
me.w = me.G5[,2]
int.x = c((me.x/2+.5)*0.1,0.1+(me.x/2+.5)*0.9,1+(me.x/2+.5)*9,10+(me.x/2+.5)*90,100+(me.x/2+.5)*900)
int.w = c(me.w*0.1/2,me.w*.9/2,me.w*9/2,me.w*90/2,me.w*900/2)
### pdf
me.pdf = function(MF,l) {
pdf = function(x){
for(i in 1:length(l)) X[,i] = MF[[i]](x)
exp(l%*%t(X))
}
pdf
}
此代码在R ....我知道我们只使用第2:3列。 所以我理解代码,这是我的情节。
现在我用Python做了,我知道有很多库我可以用于pdf,我做了
data = np.loadtxt('xy.csv',skiprows=1, delimiter=';')
x =data[:,1]
w = data[:,2]
#int.x
a = (x/2 + 0.5)* 0.1
b= 0.1+(x/2+.5)*0.9
g = 1+(x/2+.5)*9
c= 10+(x/2+.5)*90
d= 100+(x/2+.5)*900
X=[]
X.append(a)
X.append(b)
X.append(b2)
X.append(c)
X.append(d)
#int.w
q= w* 0.1/2
e= w*0.9/2
r= w*9/2
m= w*90/2
n = w*900/2
W=[]
W.append(q)
W.append(e)
W.append(r)
W.append(m)
W.append(n)
plt.plot(X, W, marker='.', linestyle='none')
plt.margins(0.02)
我怎么做的方式非常糟糕,我知道。我真的提高了我的python技能。
...........
这部分只是R代码中的前5行:/。 所以现在,我使用图书馆的pdf&s并使我成为一个标准-pdf 比较两者。 ......... ........
from scipy.stats import norm
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1,1)
a= np.linspace(norm.ppf(0.01),norm.ppf(0.99),100)
ax.plot(a, norm.pdf(a), 'r-', lw=5, alpha=0.6, label='norm pdf')
所以我尝试做的就像在R的第一张图中一样。 或者是不可能在R中使用Python中的定义pdf?!
答案 0 :(得分:0)
好的抱歉,我忘记了
这是我在R的整个代码
### l
me.l = function(MF,mt,sv=NA,tol=1e-10) {
V = mt[2:length(mt)]
if(is.na(sv[1])) l = rep(0,length(V)) else l = sv[-1]
X = matrix(NaN,length(int.x),length(l))
for(i in 2:length(MF)) X[,i-1] = MF[[i]](int.x)
run = 0;sig = 1
while((max(abs(sig))>tol)&(run<40)) {
m1 = as.vector(exp(l%*%t(X))*int.w)
g = m1%*%t(t(X)-V)
G = (t(X)-V)%*%(m1*t(t(X)-V))
sig = solve(G,-t(g))
l = l + sig
l = as.vector(l)
run = run +1
}
m1 = as.vector(exp(l%*%t(X))*int.w)
l0 = -log(sum(m1))
c(l0,l)
}
> MPO = list();
> MPO[[1]] = function(x) 1
> MPO[[2]] = function(x) x
> MPO[[3]] = function(x) x^2
> MPO[[4]] = function(x) x^3
> l1 = me.l(MPO[1:3],c(1,5,26))
> x = seq(0,10,,1e4)
> plot(x,me.pdf(MPO[1:3],l1)(x),type='l',lwd=2)
> lines(x,dnorm(x,5,1),col='red')
最后一部分是我在R控制台上写的内容。
现在我做到了
from scipy.stats import norm
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1,1)
a= np.linspace(norm.ppf(0.01),norm.ppf(0.99),100)
ax.plot(a, norm.pdf(a), 'r-', lw=5, alpha=0.6, label='norm pdf')
ax.plot(W, norm.pdf(W), '.')